Globus® Toolkit 4

Book description

The Globus Toolkit is a key technology in Grid Computing, the exciting new computing paradigm that allows users to share processing power, data, storage, and other computing resources across institutional and geographic boundaries. Globus Toolkit 4: Programming Java Services provides an introduction to the latest version of this widely acclaimed toolkit. Based on the popular web-based The Globus Toolkit 4 Programmer's Tutorial, this book far surpasses that document, providing greater detail, quick reference appendices, and many additional examples. If you’re making the leap into Grid Computing using the Globus Toolkit, you’ll want Globus Toolkit 4: Programming Java Services at your side as you take your first steps.
  • Written for newcomers to Globus Toolkit, but filled with useful information for experienced users.
  • Clearly situates Globus application development within the context of Web Services and evolving Grid standards.
  • Provides detailed coverage of Web Services programming with the Globus Toolkit's Java WS Core component.
  • Covers basic aspects of developing secure services using the Grid Security Infrastructure (GSI).
  • Uses simple, didactic examples throughout the book, but also includes a more elaborate example, the FileBuy application, that showcases common design patterns found in Globus applications.
  • Concludes with useful reference appendices.

Table of contents

  1. Front cover
  2. Title page
  3. Copyright page
  4. Table of contents
  5. List of Figures
  6. List of Tables
  7. Foreword
  8. Preface
    1. Scope of This Book
    2. How This Book is Structured
    3. The Flow of the Book
    4. Prerequisites
    5. The Book Website is Your Friend!
    6. Other Important Web Resources
    7. Where to Get Help
    8. Reporting Typos, Bugs, etc.
    9. The Book’s Kid Brother: The GT4 Programmer’s Tutorial
    10. Acknowledgments
    11. Conventions
  9. Part I - Key Concepts
    1. Chapter 1 - Grid Computing
      1. 1.1 A Problem
      2. 1.2 The Solution: Grid Computing
      3. 1.3 The Textbook Definition
      4. 1.4 The Grid Architecture
        1. 1.4.1 Fabric
        2. 1.4.2 Connectivity
        3. 1.4.3 Resource
        4. 1.4.4 Collective
        5. 1.4.5 Applications
      5. 1.5 Examples of Grid Systems
      6. 1.6 Summing Up...
      7. References
    2. Chapter 2 - OGSA, WSRF, and GT4
      1. 2.1 OGSA and WSRF
        1. 2.1.1 The Open Grid Services Architecture (OGSA)
        2. 2.1.2 The Web Services Resource Framework (WSRF)
      2. 2.2 How Does this Relate to GT4?
      3. References
    3. Chapter 3 - Web Services
      1. 3.1 A Typical Web Service Invocation
      2. 3.2 Web Services Architecture
      3. 3.3 Web Services Addressing
      4. 3.4 How Does this Work in Practice?
        1. 3.4.1 A Typical Web Service Invocation (redux)
      5. 3.5 The Server Side, Up Close
      6. References
    4. Chapter 4 - WSRF
      1. 4.1 WSRF: It’s All About State
      2. 4.2 The Resource Approach to Statefulness
      3. 4.3 Addressing WS-Resources
      4. 4.4 Resource Properties
      5. 4.5 The WSRF Specification
        1. 4.5.1 WS-ResourceProperties
        2. 4.5.2 WS-ResourceLifetime
        3. 4.5.3 WS-ServiceGroup
        4. 4.5.4 WS-BaseFaults
      6. 4.6 Related Specifications
        1. 4.6.1 WS-Notification
        2. 4.6.2 WS-Addressing
      7. References
    5. Chapter 5 - The Globus Toolkit 4
      1. 5.1 GT4 Component Overview
        1. 5.1.1 Security
        2. 5.1.2 Data Management
        3. 5.1.3 Execution Management
        4. 5.1.4 Information Services
        5. 5.1.5 Common Runtime
      2. 5.2 GT4 Service Overview
      3. References
  10. Part II - GT4 Java WS Core
    1. Chapter 6 - Writing Your First Stateful Web Service in 5 Simple Steps
      1. 6.1 Step 1: Defining the Interface in WSDL (1/2)
      2. 6.1 Step 1: Defining the Interface in WSDL (2/2)
        1. 6.1.1 The WSDL Code
        2. 6.1.2 WSRF and Globus-Specific Features of WSDL
        3. 6.1.3 Namespace Mappings
      3. 6.2 Step 2: Implementing the Service in Java (1/3)
      4. 6.2 Step 2: Implementing the Service in Java (2/3)
      5. 6.2 Step 2: Implementing the Service in Java (3/3)
        1. 6.2.1 The QNames Interface
        2. 6.2.2 The Service Implementation
      6. 6.3 Step 3: Configuring the Deployment in WSDD (and JNDI)
        1. 6.3.1 The WSDD Deployment Descriptor
        2. 6.3.2 The JNDI Deployment File
      7. 6.4 Step 4: Create a GAR File With Ant
        1. 6.4.1 Ant
        2. 6.4.2 The globus-build-service Script and buildfile
        3. 6.4.3 Creating the MathService GAR
      8. 6.5 Step 5: Deploy the Service into a Web Services Container
      9. 6.6 A Simple Client (1/2)
      10. 6.6 A Simple Client (2/2)
    2. Chapter 7 - Singleton Resources
      1. 7.1 Splitting Up the Implementation
        1. 7.1.1 The Resource, the Home, and the Service
        2. 7.1.2 The WSDL File
        3. 7.1.3 The Constants Interface
        4. 7.1.4 The Resource Implementation
        5. 7.1.5 The Service Implementation
        6. 7.1.6 The Resource Home
      2. 7.2 Build, Deploy, and Try it Out... With the Same Client
    3. Chapter 8 - Multiple Resources
      1. 8.1 The WS-Resource Factory Pattern
      2. 8.2 Implementing the WS-Resource Factory Pattern in GT4
      3. 8.3 The Factory Service
      4. 8.4 The Instance Service
      5. 8.5 The Resource
      6. 8.6 The Resource Home
      7. 8.7 Build and Deploy (1/2)
      8. 8.7 Build and Deploy (2/2)
        1. 8.7.1 The Deployment Descriptor
        2. 8.7.2 The JNDI Deployment File
        3. 8.7.3 Build and Deploy
      9. 8.8 A Simple Client
      10. 8.9 A Slightly Less Simple Client (1/2)
      11. 8.9 A Slightly Less Simple Client (2/2)
        1. 8.9.1 The Creating Client
        2. 8.9.2 The Adding Client
    4. Chapter 9 - Logging
      1. 9.1 The Jakarta Commons Logging Architecture
      2. 9.2 Adding Logging to MathService
      3. 9.3 Viewing Log Output
    5. Chapter 10 - Resource Properties
      1. 10.1 A Closer Look at Resource Properties
      2. 10.2 Using Standard WSRF portTypes
      3. 10.3 WS-ResourceProperties portTypes
        1. 10.3.1 GetResourceProperty
        2. 10.3.2 GetMultipleResourceProperties
        3. 10.3.3 SetResourceProperties
        4. 10.3.4 QueryResourceProperties
      4. 10.4 Accessing Resource Properties the Right Way (1/2)
      5. 10.4 Accessing Resource Properties the Right Way (2/2)
        1. 10.4.1 The WSDL File
        2. 10.4.2 The Java Files
        3. 10.4.3 Operation Providers
        4. 10.4.4 The Deployment Files
        5. 10.4.5 Build and Deploy
      6. 10.5 A More Elaborate Example (1/3)
      7. 10.5 A More Elaborate Example (2/3)
      8. 10.5 A More Elaborate Example (3/3)
        1. 10.5.1 The WSDL File
        2. 10.5.2 The Resource Implementation
        3. 10.5.3 The Deployment Files
        4. 10.5.4 Build and Deploy
        5. 10.5.5 Client Code
      9. 10.6 SimpleResourceProperty
      10. 10.7 Command-line Clients
        1. 10.7.1 wsrf-get-property
        2. 10.7.2 wsrf-get-properties
        3. 10.7.3 wsrf-update-property
        4. 10.7.4 wsrf-insert-property
        5. 10.7.5 wsrf-delete-property
        6. 10.7.6 wsrf-query
      11. Reference
    6. Chapter 11 - Lifecycle Management
      1. 11.1 Immediate Destruction
      2. 11.2 Scheduled Destruction (1/2)
      3. 11.2 Scheduled Destruction (2/2)
        1. 11.2.1 The WSDL File
        2. 11.2.2 The Resource Implementation
        3. 11.2.3 Deployment
        4. 11.2.4 The Client
      4. 11.3 Performing an Action When a Resource is Destroyed
      5. 11.4 Command-Line Clients
        1. 11.4.1 wsrf-destroy
        2. 11.4.2 wsrf-set-termination-time
      6. References
    7. Chapter 12 - Persistent Resources
      1. 12.1 In-Memory vs. Persistent
      2. 12.2 The PersistentResource Interface
        1. 12.2.1 The load Method
        2. 12.2.2 The store Method
        3. 12.2.3 Cleaning Up
      3. 12.3 Adding Persistence to MathService (1/3)
      4. 12.3 Adding Persistence to MathService (2/3)
      5. 12.3 Adding Persistence to MathService (3/3)
        1. 12.3.1 Tweaking the initialize Method
        2. 12.3.2 Using FilePersistenceHelper
        3. 12.3.3 The store Method
        4. 12.3.4 The load Method
        5. 12.3.5 Cleaning Up
        6. 12.3.6 Trying it Out
      6. 12.4 The Resource Cache
      7. References
    8. Chapter 13 - Notifications
      1. 13.1 What Are Notifications?
      2. 13.2 WS-Notifications
        1. 13.2.1 WS-Topics
        2. 13.2.2 WS-BaseNotification
        3. 13.2.3 WS-BrokeredNotification
      3. 13.3 Notifications in GT4
      4. 13.4 Notifying Changes in a Resource Property (1/3)
      5. 13.4 Notifying Changes in a Resource Property (2/3)
      6. 13.4 Notifying Changes in a Resource Property (3/3)
        1. 13.4.1 The WSDL File
        2. 13.4.2 The Resource Implementation
        3. 13.4.3 The Service Implementation
        4. 13.4.4 Deployment Descriptor
        5. 13.4.5 Compile and Deploy
        6. 13.4.6 Client Code
      7. 13.5 Using ReflectionResourceProperty Instead of SimpleResourceProperty
      8. 13.6 Custom Notification Messages (1/2)
      9. 13.6 Custom Notification Messages (2/2)
        1. 13.6.1 The WSDL File
        2. 13.6.2 Resource Implementation
        3. 13.6.3 Service Implementation
        4. 13.6.4 Compile and Deploy
        5. 13.6.5 Listening for Notifications
      10. 13.7 Command-Line Clients
        1. 13.7.1 wsn-subscribe
        2. 13.7.2 wsn-get-current-message
      11. References
    9. Chapter 14 - Implementing Your Own Operation Providers
      1. 14.1 The RemoteLogging Provider
      2. 14.2 The Operation Provider’s WSDL File
      3. 14.3 The Operation Provider Implementation
      4. 14.4 Plugging Our Operation Provider into MathService
        1. 14.4.1 The WSDL File
        2. 14.4.2 The Resource Implementation
        3. 14.4.3 The Deployment Descriptor
      5. 14.5 Trying It Out
  11. Part III - GT4 Security
    1. Chapter 15 - Fundamental Security Concepts
      1. 15.1 What is a Secure Communication?
        1. 15.1.1 The Three Pillars of a Secure Communication
        2. 15.1.2 Authorization
      2. 15.2 Introduction to Cryptography
        1. 15.2.1 Key-based Algorithms
        2. 15.2.2 Symmetric and Asymmetric Key-Based Algorithms
      3. 15.3 Public-Key Cryptography
        1. 15.3.1 A Secure Conversation Using Public-Key Cryptography
        2. 15.3.2 Pros and Cons of Public-key Systems
        3. 15.3.3 Digital Signatures: Integrity in Public-key Systems
        4. 15.3.4 Authentication in Public-key Systems
      4. 15.4 Certificates and Certificate Authorities
        1. 15.4.1 It’s All About Trust
        2. 15.4.2 X.509 Certificate Format
        3. 15.4.3 CA Hierarchies
      5. References
    2. Chapter 16 - GSI: Grid Security Infrastructure
      1. 16.1 Introduction to GSI
      2. 16.2 Transport-Level and Message-Level Security
      3. 16.3 Authentication
      4. 16.4 Authorization
        1. 16.4.1 Server-Side Authorization
        2. 16.4.2 Client-Side Authorization
        3. 16.4.3 Custom Authorization
      5. 16.5 Delegation and Single Sign-on (Proxy Certificates)
        1. 16.5.1 The Problem
        2. 16.5.2 The Solution: Proxy Certificates
        3. 16.5.3 What the Solution Achieves: Delegation and Single Sign-On (and more)
        4. 16.5.4 The Specifics
      6. 16.6 Container, Service, and Resource Security
      7. References
    3. Chapter 17 - Writing a Secure MathService
      1. 17.1 A Secure Service
        1. 17.1.1 The Service Interface
        2. 17.1.2 The Service Implementation
      2. 17.2 The Security Descriptor
      3. 17.3 A Secure Client
      4. 17.4 Trying It Out
      5. 17.5 Does This Really Work? (1/2)
      6. 17.5 Does This Really Work? (2/2)
    4. Chapter 18 - The Security Descriptor
      1. 18.1 Basic Structure
      2. 18.2 Common Options
      3. 18.3 The Service Security Descriptor
      4. 18.4 The Resource Security Descriptor
      5. 18.5 The Client Security Descriptor
      6. 18.6 The Container Security Descriptor
        1. 18.6.1 Specifying the Container Credentials
        2. 18.6.2 Message-level Security Options
        3. 18.6.3 Global Gridmap File
    5. Chapter 19 - Authentication
      1. 19.1 Service Authentication Options
        1. 19.1.1 Setting the Default Authentication Methods
        2. 19.1.2 Setting Per-Method Authentication
        3. 19.1.3 Setting the Protection Level
      2. 19.2 Client Authentication Options
        1. 19.2.1 GSI Secure Conversation
        2. 19.2.2 GSI Secure Message
        3. 19.2.3 GSI Transport
      3. 19.3 Examples (1/3)
      4. 19.3 Examples (2/3)
      5. 19.3 Examples (3/3)
        1. 19.3.1 Example #1
        2. 19.3.2 Example #2
    6. Chapter 20 - Authorization
      1. 20.1 Server-side Authorization
        1. 20.1.1 No Authorization
        2. 20.1.2 Self Authorization
        3. 20.1.3 Identity Authorization
        4. 20.1.4 Host Authorization
        5. 20.1.5 SAML Callout Authorization
      2. 20.2 Gridmap Authorization
        1. 20.2.1 The Gridmap File
        2. 20.2.2 Configuring Gridmap Authorization
        3. 20.2.3 The Service
      3. 20.3 Client-side Authorization
        1. 20.3.1 No Authorization
        2. 20.3.2 Self Authorization
        3. 20.3.3 Identity Authorization
        4. 20.3.4 Host Authorization
      4. 20.4 Custom Authorization Mechanisms
    7. Chapter 21 - Resource-Level Security
      1. 21.1 The Resource Security Descriptor
      2. 21.2 Configuring Resource Security Programmatically
      3. 21.3 Example
        1. 21.3.1 The WSDL File
        2. 21.3.2 Implementation Files
        3. 21.3.3 Deployment Descriptors
        4. 21.3.4 Build and Deploy
        5. 21.3.5 Trying it Out
    8. Chapter 22 - Run-as Modes and Delegation
      1. 22.1 Run-as Modes
      2. 22.2 A First Approach at Delegation
        1. 22.2.1 Activating Delegation on the Client Side
        2. 22.2.2 Activating Delegation on the Server Side
        3. 22.2.3 Compile and Deploy
        4. 22.2.4 Compiling and Running the Client
      3. 22.3 A More Elaborate Delegation Example (1/3)
      4. 22.3 A More Elaborate Delegation Example (2/3)
      5. 22.3 A More Elaborate Delegation Example (3/3)
        1. 22.3.1 Overview
        2. 22.3.2 PhysicsService
        3. 22.3.3 Compiling and Deploying
        4. 22.3.4 A non-delegating Client
        5. 22.3.5 A Delegating Client
      6. 22.4 Delegating Credentials to a Resource (1/2)
      7. 22.4 Delegating Credentials to a Resource (2/2)
        1. 22.4.1 The Security Descriptors
        2. 22.4.2 The WSDL File
        3. 22.4.3 Implementation Files
        4. 22.4.4 Build and Deploy
        5. 22.4.5 Trying it Out
      8. 22.5 The Delegation Service
      9. References
  12. Part IV - The FileBuy Application
    1. Chapter 23 - Design
      1. 23.1 Resource Brokering Overview
      2. 23.2 FileBuy System Overview
      3. 23.3 Use Cases (1/2)
      4. 23.3 Use Cases (2/2)
        1. 23.3.1 Usage Scenario 1: Advertising a File
        2. 23.3.2 Usage Scenario 2: Finding a File
        3. 23.3.3 Usage Scenario 3: Purchasing a File
      5. 23.4 Deployment Architecture
      6. 23.5 Security Considerations
        1. 23.5.1 Authentication
        2. 23.5.2 Privacy and Integrity
        3. 23.5.3 Authorization
      7. 23.6 Summing Up
        1. 23.6.1 Design is Good!
      8. References
    2. Chapter 24 - Implementation
      1. 24.1 Setting Up
        1. 24.1.1 Running FileBuy on a Single Machine
      2. 24.2 Usage Scenario 1: Advertising a File (1/2)
      3. 24.2 Usage Scenario 1: Advertising a File (2/2)
        1. 24.2.1 The FilesForSale Service
        2. 24.2.2 The AddFile Client
        3. 24.2.3 Trying it Out
      4. 24.3 Usage scenario 2: Finding a File (1/2)
      5. 24.3 Usage scenario 2: Finding a File (2/2)
        1. 24.3.1 The File Broker Service
        2. 24.3.2 The FindFile Client
      6. 24.4 Usage Scenario 3: Purchasing a File (1/2)
      7. 24.4 Usage Scenario 3: Purchasing a File (2/2)
        1. 24.4.1 The FileBuyer Service: The Purchase Operation
        2. 24.4.2 The FileBroker Service: The purchase Operation
        3. 24.4.3 The FilesForSale Service: The fillOrder Operation
        4. 24.4.4 The FileTransfer Service: The transfer Operation
        5. 24.4.5 The FileBuyer Service: The transfer Operation
        6. 24.4.6 The FileBroker Service: The report Operation
        7. 24.4.7 Trying it Out
    3. Conclusion
  13. Part V - Appendices
    1. Appendix A - Installing the Globus Toolkit 4
      1. A.1 Software Prerequisites
        1. A.1.1 Required Software
        2. A.1.2 Optional Software
        3. A.1.3 Platform Notes
      2. A.2 Installing the Toolkit
        1. A.2.1 Installing the Full Toolkit [UNIX Only]
        2. A.2.2 Installing Java WS Core [UNIX and Windows]
        3. A.2.3 Setting Environment Variables
      3. A.3 Setting Up GT4 to Work with a CA
        1. A.3.1 Setting Up SimpleCA
        2. A.3.2 Using an Existing CA
        3. A.3.3 Using GCS
      4. A.4 Obtaining a Host Certificate
      5. A.5 Setting Up the Container Certificate
      6. A.6 Setting Up User Certificates
      7. A.7 The Globus Standalone Container
    2. Appendix B - A WSDL Primer
      1. B.1 The Bare Bones of Our WSDL File
      2. B.2 The Port Type
      3. B.3 The Messages
      4. B.4 The Response and Request Types
      5. B.5 Declaring the Resource Properties
      6. B.6 Summing Up...
      7. References
    3. Appendix C - Command-Line Clients
      1. C.1 The Common Parameters
      2. C.2 Resource Property Clients
        1. C.2.1 wsrf-get-properties
        2. C.2.2 wsrf-update-property
        3. C.2.3 wsrf-insert-property
        4. C.2.4 wsrf-delete-property
        5. C.2.5 wsrf-query
      3. C.3 Resource Lifetime Clients
        1. C.3.1 wsrf-destroy
        2. C.3.2 wsrf-set-termination-time
      4. C.4 Notification Clients
        1. C.4.1 wsn-subscribe
        2. C.4.2 wsn-get-current-message
      5. C.5 Globus Management
        1. C.5.1 Globus-start-container
        2. C.5.2 globus-stop-container
      6. C.6 Usage Examples
        1. C.6.1 The -s (--service) Parameter
        2. C.6.2 The -e (--eprFile) Parameter
        3. C.6.3 The -k (--key) Parameter
    4. Appendix D - Examples
      1. D.1 Service Interfaces
        1. D.1.1 FactoryService
        2. D.1.2 MathService_instance
        3. D.1.3 MathService_instance_4op
        4. D.1.4 MathService_instance_helloworld
        5. D.1.5 MathService_instance_notif
        6. D.1.6 MathService_instance_remotelog
        7. D.1.7 MathService_instance_rl
        8. D.1.8 MathService_instance_rp
        9. D.1.9 MathService_instance_rp_complex
        10. D.1.10 PhysicsService
        11. D.1.11 RemoteLogging
      2. D.2 Services
    5. Appendix E - globus-build-service Script Reference
      1. E.1 Parameters
      2. E.2 Shorthand Notation
      3. E.3 The GAR File
      4. E.4 The build Directory
  14. Index (1/3)
  15. Index (2/3)
  16. Index (3/3)

Product information

  • Title: Globus® Toolkit 4
  • Author(s): Borja Sotomayor, Lisa Childers
  • Release date: January 2006
  • Publisher(s): Morgan Kaufmann
  • ISBN: 9780080460031