How to Build a Service Using GT4

Similar documents
How to Build a Service Using GT4

GT-OGSA Grid Service Infrastructure

Building Services in WSRF. Ben Clifford GGF Summer School July 2004

Grid Middleware and Globus Toolkit Architecture

GLOBUS TOOLKIT SECURITY

Design The way components fit together

Tutorial 1: Introduction to Globus Toolkit. John Watt, National e-science Centre

WSMetacatService a GT4 Web Service Wrapper for Metacat

Grid Services and the Globus Toolkit

Research and Design Application Platform of Service Grid Based on WSRF

Introduce Grid Service Authoring Toolkit

BEAAquaLogic. Service Bus. Interoperability With EJB Transport

Globus GTK and Grid Services

CO Java EE 7: Back-End Server Application Development

Design The way components fit together

Programming Web Services in Java

Java Development and Grid Computing with the Globus Toolkit Version 3

WS-Resource Framework: Globus Alliance Perspectives

F O U N D A T I O N. OPC Unified Architecture. Specification. Part 1: Concepts. Version 1.00

GT4 Java WS Core Design May 5, 2006 Jarek Gawor Sam Meder

GSI-based Security for Web Services

Web Services Development for IBM WebSphere Application Server V7.0

OGSA-based Problem Determination An Use Case

Globus Toolkit 4 Execution Management. Alexandra Jimborean International School of Informatics Hagenberg, 2009

Grid Computing. Resource Properties so far. Resource Property Document. Globus Toolkit Programming GT4 Tutorial Chapter 6 Resource Properties

Java EE 7: Back-End Server Application Development

Semantic SOA - Realization of the Adaptive Services Grid

Using the MyProxy Online Credential Repository

Opal: Wrapping Scientific Applications as Web Services

CO Java EE 6: Develop Web Services with JAX-WS & JAX-RS

Credentials Management for Authentication in a Grid-Based E-Learning Platform

IBM Security Access Manager Version January Federation Administration topics IBM

Classroom Exercises for Grid Services

Grid Computing Fall 2005 Lecture 5: Grid Architecture and Globus. Gabrielle Allen

A Tutorial on The Jini Technology

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI

Enterprise JavaBeans, Version 3 (EJB3) Programming

Oracle Service Bus. Interoperability with EJB Transport 10g Release 3 (10.3) October 2008

A Comparative Study of Web Services-based Event Notification Specifications

On the Creation & Discovery of Topics in Distributed Publish/Subscribe systems

Introduction to GT3. Introduction to GT3. What is a Grid? A Story of Evolution. The Globus Project

Installation and Administration

Research on the Key Technologies of Geospatial Information Grid Service Workflow System

Regular Forum of Lreis. Speechmaker: Gao Ang

Towards a Telecommunication Service Oriented Architecture

Apache Wink Developer Guide. Draft Version. (This document is still under construction)

On Using BPEL Extensibility to Implement OGSI and WSRF Grid Workflows

Java- EE Web Application Development with Enterprise JavaBeans and Web Services

WSRF Services for Composing Distributed Data Mining Applications on Grids: Functionality and Performance

Web Services in Cincom VisualWorks. WHITE PAPER Cincom In-depth Analysis and Review

Grid Business Process: Case Study

A Replica Location Grid Service Implementation

SERVICE-ORIENTED COMPUTING

CA SiteMinder Federation

Grid Architectural Models

CA CloudMinder. SSO Partnership Federation Guide 1.51

An OGSI CredentialManager Service Jim Basney a, Shiva Shankar Chetan a, Feng Qin a, Sumin Song a, Xiao Tu a, and Marty Humphrey b

Agent-Enabling Transformation of E-Commerce Portals with Web Services

OPC UA Configuration Manager PTC Inc. All Rights Reserved.

Lesson 10 BPEL Introduction

"Charting the Course... Mastering EJB 3.0 Applications. Course Summary

(9A05803) WEB SERVICES (ELECTIVE - III)

Task Management Service

Cloud Computing. Up until now

By Ian Foster. Zhifeng Yun

Testpassport.

Oracle Service Bus. 10g Release 3 (10.3) October 2008

Identity Provider for SAP Single Sign-On and SAP Identity Management

PAUL MESTEREAGA MAHMOUD ABUBAKR KEVIN VAN GYSEGHEM

An Eclipse-based Environment for Programming and Using Service-Oriented Grid

IVOA/AstroGrid SSO system and Grid standards

We recommend you review this before taking an ActiveVOS course or before you use ActiveVOS Designer.

Sentinet for BizTalk Server SENTINET

5.3 Using WSDL to generate client stubs

SDD Proposal to COSMOS

ICENI: An Open Grid Service Architecture Implemented with Jini Nathalie Furmento, William Lee, Anthony Mayer, Steven Newhouse, and John Darlington

XML Web Services Basics

Introduction to Web Application Development Using JEE, Frameworks, Web Services and AJAX

BlackBerry Enterprise Server for IBM Lotus Domino Version: 5.0. Administration Guide

Implementing a Web Service p. 110 Implementing a Web Service Client p. 114 Summary p. 117 Introduction to Entity Beans p. 119 Persistence Concepts p.

Overview SENTINET 3.1

BEAWebLogic Server. WebLogic Web Services: Advanced Programming

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

Chapter 17 Web Services Additional Topics

CA CloudMinder. SSO Partnership Federation Guide 1.53

On Using BPEL Extensibility to Implement OGSI and WSRF Grid Workflows

Topics on Web Services COMP6017

Borland Application Server Certification. Study Guide. Version 1.0 Copyright 2001 Borland Software Corporation. All Rights Reserved.

From Web Services Toward Grid Services

Introduction of PDE.Mart

Federated Services for Scientists Thursday, December 9, p.m. EST

Web Services Security. Dr. Ingo Melzer, Prof. Mario Jeckle

Q.1. (a) [4 marks] List and briefly explain four reasons why resource sharing is beneficial.

Distributed Technologies - overview & GIPSY Communication Procedure

Web Application Development Using JEE, Enterprise JavaBeans and JPA

PKI Cert Creation via Good Control: Reference Implementation

Zukünftige Dienste im D-Grid: Neue Anforderungen an die Rechenzentren?

C exam. IBM C IBM WebSphere Application Server Developer Tools V8.5 with Liberty Profile. Version: 1.

DE Introduction to Web Development with Microsoft Visual Studio 2010

SUN. Java Platform Enterprise Edition 6 Web Services Developer Certified Professional

Transcription:

How to Build a Service Using GT4 Globus Alliance Staff Rachana Ananthakrishnan, Charles Bacon, Lisa Childers, Jarek Gawor, Joe Insley, Argonne National Laboratory and the University of Chicago Ben Clifford, formerly of the USC/Information Sciences Institute

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 2

Very Brief Overview of GT The Globus Toolkit (GT) is organized as a collection of looselycoupled components GT components contain: services and clients libraries development tools GT components are used to build Grid-based applications and services GT can be viewed as a Grid SDK GT components can be categorized across a couple of different dimensions By broad domain area By protocol support September 2005 How to Build a Service Using GT4 3

GT Domain Areas Security Apply uniform policy across distinct systems Data management Discover, transfer, & access large data Execution management Provision, deploy, & manage resources Information services Discover & monitor resources Common runtime Host existing services and build new services September 2005 How to Build a Service Using GT4 4

GT Protocol Support Web service protocols WS-I, WSRF, WSN, WS Addressing, WS Security Non Web service protocols Standards-based, such as GridFTP Proprietary September 2005 How to Build a Service Using GT4 5

September 2005 How to Build a Service Using GT4 6

September 2005 How to Build a Service Using GT4 7

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 8

Tutorial Structure The tutorial is organized as a series of exercises in which increasing functionality is added to a skeletal service implementation The exercises demonstrate common Web service interactions using the Globus Toolkit 4.0 The demonstration code has trivial functionality in order to maintain focus on the important bits Teach the mechanics of writing a GT4 service Highlight fundamental Grid computing interactions and patterns Each chapter includes: A discussion of the concepts behind the exercise A discussion of implementation details Hands-on exercises A summary September 2005 How to Build a Service Using GT4 9

Tutorial Materials This slideset A GT distribution Demonstration code Exercise notes A community index service Two visualizers for the community index s data X.509 certificates The oracle September 2005 How to Build a Service Using GT4 10

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 11

Exercise 1: Deploy a Service StickyNote Client 1. Deployment: Stand up a StickyNote service September 2005 How to Build a Service Using GT4 12

Concepts September 2005 How to Build a Service Using GT4 13

The StickyNote Service Today we will work with demonstration code that writes and shows a text message The demonstration code is a web service called StickyNote StickyNote, like all web services, executes inside a hosting environment (also called a container) Today we will use the Java container that is included in GT4 September 2005 How to Build a Service Using GT4 14

The StickyNote Service write-note client show-note client StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 15

Implementation details September 2005 How to Build a Service Using GT4 16

Software Requirements jdk The Java software development kit jakarta ant Open source tool for building Java code (similar to make ) a GT4 binary installation A subset of the Globus Toolkit: the wsrf and ws-mds modules taken from the globus_4_0_branch in CVS StickyNote code Demonstration code written specifically for this tutorial September 2005 How to Build a Service Using GT4 17

Hands-on Exercises Student Notes, Chapter 1 September 2005 How to Build a Service Using GT4 18

Exercise 1 Review Grid services execute inside a hosting environment Services are deployed into a container Deployed services start-up when the hosting environment is started GT4 includes a runtime environment for hosting Java services Service capabilities are invoked by clients show-note, write-note Clients do not need to be written in the same language, nor run on the same platform as the services September 2005 How to Build a Service Using GT4 19

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 20

Exercise 2: State Management I Resource 2. State Management I: Create Resources StickyNote 1. Deployment: Stand up a StickyNote service Client September 2005 How to Build a Service Using GT4 21

Concepts September 2005 How to Build a Service Using GT4 22

Service Basics Now that we ve deployed and interacted with the barebones demonstration service we ll begin to modify it in ways that highlight some key Grid computing concepts We begin with explanations of some GT4 service basics September 2005 How to Build a Service Using GT4 23

Service Basics: Operations Services have operations Service developers can define as many operations as they wish for their services Our StickyNote currently has two operations defined write a note show a note In this chapter we will learn how to add a new operation create a note September 2005 How to Build a Service Using GT4 24

Service Basics: Operations write-note show-note Operations StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 25

Service Basics: Resources In addition to operations, GT4 Web services can provide access to state state is service-related data that persists across client invocations The state of our StickyNote service is note content September 2005 How to Build a Service Using GT4 26

Service Basics: Resources In the GT4 Java service programming model, state is stored in a Resource class The StickyNote service currently contains only a single Resource In this chapter we will learn how to add support for multiple notes Note that GT4 does not mandate the use of state. Developers can also write and host stateless services using GT4 September 2005 How to Build a Service Using GT4 27

Service Basics: Resources Operations Resource hello. StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 28

Service Basics: Resource Homes Resources are managed by Resource Homes Resource Homes provide an interface for adding and removing Resources In order to add support for multiple notes we must change from a Resource Home that supports a single Resource to a Resource Home that can hold multiple Resources September 2005 How to Build a Service Using GT4 29

Service Basics: Resource Homes Operations Resources hello. hello. hello. ResourceHome service GT4 Java WS Core September 2005 How to Build a Service Using GT4 30

Sidebar: GT4 Resources and the Factory Pattern A factory is a well-accepted software design pattern Factories encapsulate rules for the dynamic creation of entities Let s look briefly at two example approaches for implementing factories using GT4 September 2005 How to Build a Service Using GT4 31

Sidebar: GT4 Resources and the Factory Pattern Factory approach #1: Single factory service with a Resource Home supporting multiple resources Instance Resources Resource home supporting multiples Factory service September 2005 How to Build a Service Using GT4 32

Sidebar: GT4 Resources and the Factory Pattern Factory approach #2: Factory service containing a singleton resource home and a companion instance service Factory service Instance service Singleton resource home Resource containing state applicable to all instances Instance Resources September 2005 How to Build a Service Using GT4 33

Implementation details September 2005 How to Build a Service Using GT4 34

Types of Files Interface description files: *.wsdl Defines the public interface for the service Service and client source files: *.java Contain the implementation of the interface Build instructions for ant: build.xml Like a makefile Service deployment instructions: *.wsdd & jndi Specifies container-level service configuration information September 2005 How to Build a Service Using GT4 35

Hands-on Exercises Student Notes, Chapter 2 September 2005 How to Build a Service Using GT4 36

Exercise 2 Review Services have operations Services can have stateful components, called Resources The multiple resources contain different state, but are accessed via the same service The WSDL contains definitions of types, messages, and operations The Java contains implementations of the operations defined in WSDL September 2005 How to Build a Service Using GT4 37

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 38

Exercise 3: Lifetime Management Resource 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources StickyNote 1. Deployment: Stand up a StickyNote service Client September 2005 How to Build a Service Using GT4 39

Concepts September 2005 How to Build a Service Using GT4 40

Chapter Overview If we keep creating resources, we ll eventually overwhelm our system In this chapter we will learn how to destroy resources To do so, we must be able to identify an individual resource September 2005 How to Build a Service Using GT4 41

On Lifetime Management September 2005 How to Build a Service Using GT4 42

EPRs as Identifiers In order to destroy a particular Resource, we must be able to identify it In Web services, End Point References (EPRs) are used to identify a particular endpoint on the network The WSRF specs define a way that EPRs can be used to identify a single Resource Each Resource in our StickyNote service has an EPR September 2005 How to Build a Service Using GT4 43

A Runtime Example of EPR Creation create-note Create EPR1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 44

A Runtime Example of EPR Creation create-note EPR1 key1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 45

A Runtime Example of EPR Creation create-note EPR2 (EPR2 = EPR1 + Key1) EPR1 key1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 46

A Runtime Example of EPR Creation create-note EPR2 EPR1 key1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 47

A Runtime Example of EPR Creation Subsequent messages that refer to EPR2 will be associated with the new Resource EPR2 EPR2 EPR1 key1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 48

Destroy the Resources you must EPRs are useful because they uniquely identify a network-based entity Now that we know how to uniquely identify a resource, we can destroy it without risk of destroying the wrong thing September 2005 How to Build a Service Using GT4 49

Resource Destruction The ability to destroy Resources is built-in to the GT4 hosting environment Code to perform destruction is included in the Toolkit as an operation provider An operation provider is simply a Java class that contains a discrete set of functionality GT4 includes support for adding operation providers to existing services September 2005 How to Build a Service Using GT4 50

On Operation Providers Operation providers are fundamental to the GT4 service programming model keyn keyx key1 EPR Operation Providers service GT4 Java WS Core September 2005 How to Build a Service Using GT4 51

Implementation details September 2005 How to Build a Service Using GT4 52

Destroying StickyNote Resources We will use the EPR generated by the create operation to identify the resource we want to destroy To do this, we need to add a destroy operation defined in WSDL, and provide the implementation of the operation in our service via an operation provider September 2005 How to Build a Service Using GT4 53

Adding Destroy to StickyNote 3. Use the GT4-supplied Destroy client to invoke the operation wsrf-destroy 1. Add a Destroy operation to the service definition keyn keyx key1 EPR1 2. Add Destroy functionality by adding the GT4-supplied operation provider StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 54

Resource Destruction Runtime wsrf-destroy EPR2 EPR1 keyn keyx key1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 55

Resource Destruction Runtime wsrf-destroy Destroy EPR2 EPR1 keyn keyx key1 StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 56

Resource Destruction Runtime wsrf-destroy EPR2 EPR1 keyn keyx StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 57

Hands-on Exercises Student Notes, Chapter 3 September 2005 How to Build a Service Using GT4 58

EPRs identify targets (endpoints) for messages Exercise 3 Review In our case, identifying a service+resource pair EPRs can be used to identify Resources to destroy Service developers use operation providers to add service functionality GT4 provides several pre-written operation providers and clients for managing Resources, including the destroy capability GT4 also provides pre-written clients for managing Resources, such as wsrf-destroy September 2005 How to Build a Service Using GT4 59

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 60

Exercise 4: State Management II 4. State Management II: Add a Resource Property Resource 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources StickyNote 1. Deployment: Stand up a StickyNote service Client September 2005 How to Build a Service Using GT4 61

Concepts September 2005 How to Build a Service Using GT4 62

State Management Part II: Resource Properties A Resource Property (RP) is an XML element contained within a Resource RPs provide a view on the current state of the Resource For us, note contents For data transfer, perhaps # of files successfully transferred, bandwidth available, etc. Any Resource can expose internal state as Resource Properties September 2005 How to Build a Service Using GT4 63

State Management Part II: Resource Properties EPR Resource Properties RP key RP service GT4 Java WS Core September 2005 How to Build a Service Using GT4 64

StickyNote Resource Properties EPR key NoteContent StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 65

Implementation details September 2005 How to Build a Service Using GT4 66

Adding a Resource Property Resource Properties are part of the exposed interface of the service/resource pair, so they appear in WSDL To add a new RP, we must define it in WSDL, then write code to maintain the value in our implementation We already have notecontent as an RP In this exercise, we ll add a last modified time resource property to the note September 2005 How to Build a Service Using GT4 67

Hands-on Exercises Student Notes, Chapter 4 September 2005 How to Build a Service Using GT4 68

Exercise 4 Review Resource Properties are defined in WSDL Resource Properties are XML Resources can have as many RPs as they wish RPs provide a view on the current state of the Resource Any Resource can expose internal state as Resource Properties September 2005 How to Build a Service Using GT4 69

What We ve Covered So Far client Operations End Point References Resources EPR Operation Providers Resource Properties RP key RP Resource Home service GT4 Java WS Core September 2005 How to Build a Service Using GT4 70

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 71

Exercise 5: Discovery 4. State Management II: Add a Resource Property 5. Discovery: Find a Resource Resource Student Index 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources StickyNote 1. Deployment: Stand up a StickyNote service Client September 2005 How to Build a Service Using GT4 72

Concepts September 2005 How to Build a Service Using GT4 73

On Discovery In Grid computing we often need to find a resource that has some property In our case, a person may want to find a note containing a particular content, such as VelvetCapezzuto Discovery is the process of identifying resources based on their attributes September 2005 How to Build a Service Using GT4 74

Aggregating Resources Thus far we have manually kept track of the existence our individual sticky notes In real grid deployments this is infeasible GT4 includes an implementation of an index service that can be used to collect available resources In this chapter we will register our sticky note resources with a local Index After stickynote resources are registered, we will be able to search the Index for notes matching a particular value, facilitating resource discovery September 2005 How to Build a Service Using GT4 75

Registering with a Local Index Student Index Service I Student Container StickyNote Resources R R R September 2005 How to Build a Service Using GT4 76

September 2005 How to Build a Service Using GT4 77

Implementation details September 2005 How to Build a Service Using GT4 78

On Searching the Index The index service caches data of the Resources that have registered with it We can dump the entire content of the Index using a GT4 command-line client called wsrf-query However, if many Resources have registered, the index service will contain a large amount of data It is therefore often desirable to query an Index such that only interesting data is returned September 2005 How to Build a Service Using GT4 79

Searching Inside Resource Properties To search the data we can use an XPath query against the Resource Property Set of the Index An XPath overview in two bullets: XPath is a convenient query language for searching XML documents XPath queries are formed by identifying a route to the desired data We shall provide you with an XPath query to search the RP of the Index September 2005 How to Build a Service Using GT4 80

Searching the Entries of a GT4 Index We can find each note that contains the word hello. by sending the following XPath query to the Index: //*[localname()= Entry ][.//*[contains(., hello. )]] A human translation of this syntax: Select all the entries that contain the string hello. September 2005 How to Build a Service Using GT4 81

The Work of this Chapter In this exercise we ll create a new client called search-note for searching the index using XPath We ll also override the add method in the Resource Home with logic to register the StickyNote Resource in the local index service The registration will cause a new entry in the index to be created each time a new StickyNote resource is created September 2005 How to Build a Service Using GT4 82

Sidebar: Index as Service Group Indexes are a kind of service group Service Groups are defined as part of the WSRF specifications Service groups represent collections of services and resources Each service group registration is represented as a ServiceGroupEntry resource September 2005 How to Build a Service Using GT4 83

Sidebar: Index as Service Group Resource Resource Resource add ServiceGroup Registration operation ServiceGroup Entry add operation Registrations to the index service are represented as resources Entry Resource ServiceGroup ServiceGroupEntry GT4 Java WS Core September 2005 How to Build a Service Using GT4 84

Hands-on Exercises Student Notes, Chapter 5 September 2005 How to Build a Service Using GT4 85

Exercise 5 Review GT4 includes an implementation of an Index service which is deployed by default for installations including the WS MDS component The default index is often used to aggregate local resources of interest Registrants in an index are represented as service group entry resources The contents of an Index can be inspected using the GT command-line tool wsrf-query, as well as more complicated XPath queries Indexes enable the discovery of resources based on properties September 2005 How to Build a Service Using GT4 86

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 87

Exercise 6: Virtual Organizations 4. State Management II: Add a Resource Property Resource 5. Discovery: Find a Resource Student Index Tutorial Index 6. Virtual Organization: Register with a community index 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources StickyNote 1. Deployment: Stand up a StickyNote service Client September 2005 How to Build a Service Using GT4 88

Concepts September 2005 How to Build a Service Using GT4 89

Virtual Organizations There is a structure that underlies many Grid problem spaces The structure is referred to as a Virtual Organization Virtual Organizations drive many of the requirements for Grid technology September 2005 How to Build a Service Using GT4 90

Virtual Organizations Distributed resources and people R R R R R R R R R R R R September 2005 How to Build a Service Using GT4 91

Virtual Organizations Distributed resources and people Linked by networks, crossing administrative domains R R R R R R R R R R R R September 2005 How to Build a Service Using GT4 92

Virtual Organizations Distributed resources and people Linked by networks, crossing administrative domains Sharing resources, common goals R R R R R R R R VO-A R R VO-B R R September 2005 How to Build a Service Using GT4 93

Virtual Organizations Distributed resources and people Linked by networks, crossing administrative domains Sharing resources, common goals Dynamic R R R R R R R R VO-A R R VO-B R R September 2005 How to Build a Service Using GT4 94

Virtual Organizations Distributed resources and people Linked by networks, crossing administrative domains Sharing resources, common goals Dynamic Fault tolerant R R R R R R R R VO-A R R VO-B R R September 2005 How to Build a Service Using GT4 95

Tutorial VO VO Index I I I I I I I R R R R R R R R R R R R R Student Indexes and StickyNote Resources September 2005 How to Build a Service Using GT4 96

The VO Index The community Index will be running on one of the instructor s machines The VO Index contains a collection of Resources available to the VO Provides a way for each StickyNote Resource to advertise its existence to the VO The Resource Properties of all sticky notes available to the VO will be cached in a single place September 2005 How to Build a Service Using GT4 97

Implementation details September 2005 How to Build a Service Using GT4 98

Registering with the VO We configure the local Index to register with the VO Index Because our local index is registered to the VO Index, the local information will propagate September 2005 How to Build a Service Using GT4 99

Information Progagation Runtime create-note StickyNote service Student 1 s Index VO Index Student 1 s GT4 Java WS Core Instructors GT4 Java WS Core September 2005 How to Build a Service Using GT4 100

Information Progagation Runtime create-note Create add StickyNote service Student 1 s Index VO Index Student 1 s GT4 Java WS Core Instructors GT4 Java WS Core September 2005 How to Build a Service Using GT4 101

Information Progagation Runtime create-note Entry of R1 Entry of Student 1 s Index R1 StickyNote service Student 1 s Index VO Index Student 1 s GT4 Java WS Core Instructors GT4 Java WS Core September 2005 How to Build a Service Using GT4 102

Information Progagation Runtime create-note R1 Entry of R1 Entry of Student 1 s Index Entry of Student 2 s Index Entry of R1 StickyNote service Student 1 s Index VO Index Student 1 s GT4 Java WS Core Instructors GT4 Java WS Core September 2005 How to Build a Service Using GT4 103

Hands-on Exercises Student Notes, Chapter 6 September 2005 How to Build a Service Using GT4 104

Exercise 6 Review The VO Index contains the aggregate contents of all student Index services that have successfully registered with it You may browse the Index with wsrf-query or WebMDS or the fishtank After some time, destroying a resource causes it to be removed from the Index In order to function properly, Virtual Organizations require a flexible, dynamic information infrastructure Virtual Organizations drive many of the requirements in the field of Grid computing September 2005 How to Build a Service Using GT4 105

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 106

4. State Management II: Add a Resource Property 7. Lifetime Mgmt II: Lease- Based Model 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources Exercise 7: Leased-Based Lifetime Mgmt Resource StickyNote 1. Deployment: Stand up a StickyNote service 5. Discovery: Find a Resource Student Index Tutorial Index Client 6. Virtual Organization: Register with a community index September 2005 How to Build a Service Using GT4 107

Concepts September 2005 How to Build a Service Using GT4 108

Lease-Based Lifetime Management In Grid computing, we need a mechanism to clean up old/unwanted state So far we ve cleaned up after ourselves explicitly using the Destroy operation Manually destroying our own notes is fine in some contexts, but is not always possible or appropriate If a client dies or the network goes down, you would like a mechanism to clean up unused state automatically Under the lease-based model resources are removed unless kept alive by interested parties September 2005 How to Build a Service Using GT4 109

Lease-Based Lifetime Management To illustrate lease-based lifetime management, we will experiment with scheduled destruction of sticky notes Under scheduled destruction, when the lifetime lease expires, the resource will be destroyed Interested parties must renew the lease to keep the resource alive September 2005 How to Build a Service Using GT4 110

Implementation details September 2005 How to Build a Service Using GT4 111

Lease-Based Lifetime Management Runtime create-note Create StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 112

Lease-Based Lifetime Management Runtime create-note <StickyNote EPR> StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 113

Lease-Based Lifetime Management Runtime wsrf-set-termination-time SetTerminationTime Termination Time RP StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 114

Lease-Based Lifetime Management Runtime Example of scheduled destruction: The StickyNote resource goes away if its lifetime lease is allowed to expire StickyNote service GT4 Java WS Core September 2005 How to Build a Service Using GT4 115

Adding Support for Scheduled Destruction Add a SetTerminationTime operation to the WSDL Add the ResourceLifetime RP Add the SetTerminationTime operation provider September 2005 How to Build a Service Using GT4 116

Hands-on Exercises Student Notes, Chapter 7 September 2005 How to Build a Service Using GT4 117

Exercise 7 Review Resources can have a termination time The lifetime of a Resource is controlled by its termination time Under the lease-based model resources must be kept alive by interested parties When the lifetimes are allowed to expire, the resources will be garbage collected by the container Explicit destruction is required when a resource has a termination time of nil September 2005 How to Build a Service Using GT4 118

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 119

Exercise 8: Notification 4. State Management II: Add a Resource Property 7. Lifetime Mgmt II: Lease- Based Model Resource 5. Discovery: Find a Resource Student Index Tutorial Index 6. Virtual Organization: Register with a community index 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources StickyNote 1. Deployment: Stand up a StickyNote service 8. Notification: Resource as Notification producer Client September 2005 How to Build a Service Using GT4 120

Concepts September 2005 How to Build a Service Using GT4 121

Notifications Right now we have the ability to make a one-off query to retrieve RP values Show-note command pull mode GT4 also supports a push mode model in which notifications are received when the RP value changes Notifications are from one hosting environment to another September 2005 How to Build a Service Using GT4 122

Notification vocabulary We can subscribe to receive notifications Subscriptions are for a particular topic Notifications go from a Producer to a Consumer Each topic has a name Topics can be: Changes in RP values Resource destruction Service group changes Other interesting things September 2005 How to Build a Service Using GT4 123

Subscriptions Each subscription is represented as a new kind of resource We can manage the subscription through this resource Eg. cancel subscription by destroying subscription resource September 2005 How to Build a Service Using GT4 124

Implementation details September 2005 How to Build a Service Using GT4 125

Subscription and Notification subscribe Topic NotificationConsumer Resource NotificationProducer service Subscription service NotificationConsumer service Producer GT4 Java WS Core Consumer GT4 Java WS Core September 2005 How to Build a Service Using GT4 126

Subscription and Notification Topic NotificationProducer service Subscription Resource Subscription service NotificationConsumer Resource NotificationConsumer service Producer GT4 Java WS Core Consumer GT4 Java WS Core September 2005 How to Build a Service Using GT4 127

Subscription and Notification subscribe Topic Topic Topic NotificationProducer service Subscription Subscription Subscription Resource Resource Resource Subscription service NotificationConsumer Resource NotificationConsumer service Producer GT4 Java WS Core Consumer GT4 Java WS Core September 2005 How to Build a Service Using GT4 128

Subscription and Notification deliver Topic NotificationProducer service Subscription Resource Subscription service NotificationConsumer Resource NotificationConsumer service Producer GT4 Java WS Core Consumer GT4 Java WS Core September 2005 How to Build a Service Using GT4 129

Sticky note notification watch-note subscribe NotificationConsumer Resource NotificationConsumer service NotificationConsumer Resource GT4 Java WS Core Topic StickyNote service Subscription Resource Subscription service Student s GT4 Java WS Core September 2005 How to Build a Service Using GT4 130

Hands-on Exercises Student Notes, Chapter 8 September 2005 How to Build a Service Using GT4 131

Exercise 8 Review Notifications can deliver updates of RP changes The client must run another container to receive the notifications Notification delivery and order is not guaranteed September 2005 How to Build a Service Using GT4 132

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 133

4. State Management II: Add a Resource Property 7. Lifetime Mgmt II: Lease- Based Model 3. Lifetime Mgmt I: Destroy Resources Exercise 9: Service-Level Security Resource 2. State Management I: Create Resources StickyNote 5. Discovery: Find a Resource Student Index 8. Notification: Resource as Notification producer 1. 9. Service-Level Deployment: Security Stand up a StickyNote service Tutorial Index Client 6. Virtual Organization: Register with a community index September 2005 How to Build a Service Using GT4 134

Concepts September 2005 How to Build a Service Using GT4 135

GT4 Security Details Built on top of PKI Each entity has two keys: public and private Data encrypted with one key can only be decrypted with other The private key is known only to the entity The public key is given to the world encapsulated in a X.509 certificate September 2005 How to Build a Service Using GT4 136

Certificates A X.509 certificate binds a public key to a name It includes a name and a public key bundled together and signed by a trusted party (Certificate Authority) An example of a Distinguished Name (DN): /O=Tutorial/OU=User/CN=Charles Bacon September 2005 How to Build a Service Using GT4 137

Certificate Authorities A Certificate Authority (CA) signs certificate requests To verify a certificate signature, you must have a copy of the CA certificate In GT land By default, stored in /etc/gridsecurity/certificates For our tutorial, stored in $GLOBUS_LOCATION/share/certificates September 2005 How to Build a Service Using GT4 138

Proxy Certificates Proxy certificates contain a new key pair, and are signed by the original certificate Typically has shorter lifetime By default stored in /tmp/x509up_u$uid Protected by file system permissions Create a proxy using grid-proxy-init Full GT4 install includes C command line client September 2005 How to Build a Service Using GT4 139

Globus Certificate Service Globus Certificate Service Web interface to get certificates A certificate authority, but not quite Low-quality certificates http://gcs.globus.org:8080/gcs/index.html Need CA certificate, already stored in $GLOBUS_LOCATION/share/certificates for the tutorial. September 2005 How to Build a Service Using GT4 140

Certificates for tutorial Generate certificate to be signed: $GLOBUS_LOCATION/etc/grid-cert-request caemail false Generates key (userkey.pem) and request (usercert_request.pem) Upload/Paste request in http://gcs.globus.org:8080/gcs/usercert.html Store returned certificate as usercert.pem in same directory as userkey.pem To generate proxy $GLOBUS_LOCATION/bin/visual-grid-proxy-init September 2005 How to Build a Service Using GT4 141

Authentication & Authorization Authentication Establishing identity of an entity is what it is claimed to be Authorization Ensuring an entity is allowed to access resource September 2005 How to Build a Service Using GT4 142

Implementation details September 2005 How to Build a Service Using GT4 143

GT4 Authentication Support Three types of authentication Transport Level (HTTPS) Message Level Secure message Secure conversation Signature and encryption Anonymous Clients September 2005 How to Build a Service Using GT4 144

Server-side Security Security descriptors used to set security parameters Three levels of granularity: Container level settings Container security descriptor in WSDD file Service level settings Service security descriptor in service deployment in WSDD Resource level settings Programmatically set in resource object Resource-level setting has highest precedence September 2005 How to Build a Service Using GT4 145

Server-side Security: Authentication Per-method authentication and run-as settings auth-method none: no authentication SecureMessage: GSI Secure Message SecureConversation: GSI Secure Conversation SecureTransport: GSI Transport run-as caller: Execute method with caller s credential system: Execute method with container credential service: Execute method with service credential resource: Execute method with resource credential September 2005 How to Build a Service Using GT4 146

Server-side Security: Authorization Service-wide/resource-wide authorization settings A few built-in types: None: no authorization of the client will be performed Self: client will be authorized if it has the same identity as the service/resource/container Identity: client will be authorized if it is the same identity as specified by the service/resource/container GridMap: client will be authorized if its identity is listed in a gridmap file. Custom methods can be plugged in For example, perform per-method checks Chainable September 2005 How to Build a Service Using GT4 147

Client-side Security Security parameters set programmatically on the Stub (or Call object) As individual properties Using client security descriptor For example, the create-note client will set the protection mode of Secure Transport to encryption. ((Stub)portType)._setProperty( GSIConstants.GSI_TRANSPORT, Constants.ENCRYPTION); September 2005 How to Build a Service Using GT4 148

Client-side Security: Authorization A few built-in types: None, Self, Identity (same as on server) Host: service/resource will be authorized if the host returns an identity containing the hostname Client authorization is independent and separate from server authorization! September 2005 How to Build a Service Using GT4 149

Hands-on Exercises Student Notes, Chapter 9 September 2005 How to Build a Service Using GT4 150

Exercise 9 Review Container and Service security is configured declaratively using security descriptor file Resource and Client security is configured programmatically by setting properties in the code Service-side authentication may be specified on a per-operation basis Custom service-side authorization may be plugged in and chained with other schemes September 2005 How to Build a Service Using GT4 151

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 152

Exercise 10: Resource-Level Security 4. State Management II: Add a Resource Property 7. Lifetime Mgmt II: Lease- Based Model Resource 5. Discovery: Find a Resource Student Index Tutorial Index 6. Virtual Organization: Register with a community index 3. Lifetime Mgmt I: Destroy Resources 2. State Management I: Create Resources StickyNote 10. Resource- Level Security 8. Notification: Resource as Notification producer 1. 9. Service-Level Deployment: Security Stand up a StickyNote service Client September 2005 How to Build a Service Using GT4 153

Resource-Level Security This is an optional exercise There is no lecture for this chapter The lesson is contained in the student notes September 2005 How to Build a Service Using GT4 154

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 155

Tools WSDLPP Binding Generator Stub Generator (Axis) Launcher Generator September 2005 How to Build a Service Using GT4 156

Tools: WSDLPP WSDL Preprocessor Custom attribute specifies PortType composition Avoids copy-and-paste errors Handles Resource Properties merging <ant antfile="share/globus_wsrf_tools/build-stubs.xml" target="flatten"> <property name="source.flatten.dir" location="core/samples/counter"/> <property name="target.flatten.dir" location="core/samples/counter"/> <property name="wsdl.source" value="counter_port_type.wsdl"/> <property name="wsdl.target" value="counter_flattened.wsdl"/> <property name="wsdl.porttype" value="counterporttype"/> </ant> September 2005 How to Build a Service Using GT4 157

Before: Tools: WSDLPP <porttype name="counterporttype" wsdlpp:extends="wsrpw:getresourceproperty > <operation name= add > </operation> </porttype> After: <porttype name="counterporttype > <operation name= add > </operation> <operation name= GetResourceProperty > </operation> </porttype> September 2005 How to Build a Service Using GT4 158

Tools: Binding Generator Generates WSDL Binding and Service parts from WSDL PortType SOAP binding with Document/literal Handles WS-Addressing action attributes <ant antfile="share/globus_wsrf_tools/build-stubs.xml" target="generatebinding"> <property name="source.binding.dir" value="core/samples/counter"/> <property name="target.binding.dir" value="core/samples/counter"/> <property name="porttype.wsdl" value="counter_flattened.wsdl"/> <property name="binding.root" value="counter"/> </ant> September 2005 How to Build a Service Using GT4 159

Tools: Launcher Generator Generates Windows batch files and Unix/Linux shell scripts for Java clients Classpath, standard environment variables are automatically handled <ant antfile="share/globus_wsrf_common/build-launcher.xml" target="generatelauncher"> <property name="launcher-name" value="grid-proxy-init"/> <property name="class.name value="org.globus.tools.proxyinit"/> </ant> September 2005 How to Build a Service Using GT4 160

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 161

Summary setterminationtime I subscribe client I R I R R I RR I RR I R R I RR Operations End Point References Resources EPR Operation Providers Resource Properties RP key RP Resource Home service GT4 Java WS Core September 2005 How to Build a Service Using GT4 162

How to Build a Service Using GT4 Overview of Services and GT4 Build a Service 1. Getting Started: Deploy a Service 2. State Management Part I: Create Resources 3. Lifetime Management Part I: Destroy Resources 4. State Management Part II: Add a Resource Property 5. Discovery: Find a Resource 6. Building a VO: Register with a Community Index 7. Lifetime Management Part II: Lease-based Model 8. Notification: Resource as Notification Producer 9. Security Part I: Service-Level 10. Security Part II (optional): Resource-Level Overview of Tools for GT4 Service Developers Tutorial Summary Ideas for Further Work September 2005 How to Build a Service Using GT4 163

Join the GT4 Community Download and use the software, and provide feedback Join the gt4-friends@globus.org mail list Review, critique, add to documentation Globus Doc Project: http://gdp.globus.org Tell us about your GT4-related tool, service, or application Send mail to info@globus.org September 2005 How to Build a Service Using GT4 164

Further Reading Globus Toolkit web: http://www.globus.org/toolkit/ Globus Alliance web: http://www.globus.org/ The Globus Documentation Project: http://gdp.globus.org WS-Resource Framework: http://www.globus.org/wsrf/ On WSDL: http://www.w3.org/tr/wsdl Available November 28, 2005: Globus Toolkit 4: Programming Java Services Sotomayor, Childers Morgan Kaufmann 2005 ISBN 0123694043 September 2005 How to Build a Service Using GT4 165

Credits If you reuse Build a Service material please give credit to the Globus Alliance and the tutorial authors: Rachana Ananthakrishnan, Charles Bacon, Lisa Childers, Ben Clifford, Jarek Gawor, Joe Insley All tutorial code is open source and covered by the Globus Toolkit Public License http://www.globus.org/toolkit/download/license.html Robot pix created by Sam Brown http://www.explodingdog.com This or previous iterations of the tutorial have been funded in part by the US Department of Energy, the National Science Foundation and IBM Corp Questions regarding this tutorial should be directed to Lisa Childers, childers@mcs.anl.gov September 2005 How to Build a Service Using GT4 166

September 2005 How to Build a Service Using GT4 167