Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Developing Service using GT4 Writing Your First Stateful Web Service in 5 Simple Steps Adam Belloum November, 2006 Outline • What is OGSA, WSRF, GT4? • The MathService example • 5 steps to implement GT4 MathService: Step1: Step2: Step3: Step4: Step5: November, 2006 define the Interface in the WSDL implement the MathService in java configure the deployment (WSDD & JNDI) create the deployement File The client application Preparation: download GT4, and ANT • Make sure you use bash shell not a tcshell Just Type $ bash • Download the WS-core service of GT4 www.globus.org/toolkit/downloads/4.0.4/#wscore_bin/ Untar the compressed file: just type $ tar zxvf ws-core-4.0.4-bin.tar.gz • Download the Ant version 7 http://ant.apache.org/bindownload.cgi/ $ tar zxvf apache-ant-1.7.0-bin.tar.gz NOTE: November, 2006 Preparation: setting up your environment • Define & set the environment variable ANT_HOME $ export ANT_HOME=$HOME/<ANT_dir>/ GLOBUS_LOCATION $ export GLOBUS_LOCATION=$HOME/<WS-CORE_dir>/ JAVA_HOME $ export JAVA_HOME=/usr/java/<jdk_dir> • PATH: $ export PATH=$JAVA_HOME/bin: \ $ANT_HOME/bin: \ $GLOBUS_LOCATION/bin:$PATH NOTE: we use $HOME because installed both ANT and WS-CORE 2006 directory inNovember, you home Preparation: test if it works • Start the container: $ globus-start-container –nosec • Watch your screen carefully spot any Error message • Stop the container: $ globus-stop-container NOTE: globus-stop-container seem to require grid credential, for now just November, stop the2006 container <ctrl>+C or the unix command kill Preparation: Finally download the tutorial • This is a very important step if you don’t want to re-write everything from scratch • http://gdp.globus.org/gt4-tutorial/ $ tar zxvf progtutorialexamples_0.2.1.tar.gz November, 2006 You are ready to start your first experience with The Grid Enjoy & Good luck November, 2006 Introduction: OGSA, WSRF, and GT4 • Open Grid Services Architecture (OGSA), developed by The Global Grid Forum, • aims to define a common, standard, and open architecture for gridbased applications • Web Services Resource Framework, a specification developed by OASIS. • WSRF specifies how we can make our Web Services stateful, along with adding a lot of other cool features WSRF WSRF WSRF WSRF Notification Resource fault WSRF Life Properties OGSA requires specifies Stateful Web service extends November, 2006 Web service Introduction: How does this relate to GT4? Globus Toolkit 4 • GT4, includes quite a few high-level services that can be Implements Implements used to build Grid applications Service Service • These services, meet most ofHigh-level High-level Services Other packages Implementation Implementation Services Adequate for Grid (WSRF.NET, (java)…) High-level Services (java) for Grid the abstract requirements setAdequate Applications Applications forth in OGSA Implements meet requirements of • GT4 includes a complete Implemented on top of implementation of the WSRF WSRF WSRF WSRF WSRF Notification Resource OGSA fault specification. WSRF Life Properties • GT4 isn't the only WSRF requires specifies implementation. Another Stateful complete implementation of Web service the WSRF specification is extends WSRF.NET. November, 2006 Web service Introduction: The mandatory layered diagram Standards in the work (ggf) -VO management -Security -Resource Management -Data services Etc. Grid Application based On the high-level service defined by OGSA (not implemented form scratch) Applications OGSA GT4 include many of the services required by OGSA WSRF Web service Standardized (W3C) and implemented (e.g. Apache axis) November, 2006 Standardized (OASIS) and implemented GT4 Tutorial starts:The first web service • The first web service is an extremely simple Math Web Service, which we'll refer to as MathService. • It will allow users to perform the following operations: o Addition o Subtraction • MathService will have the following resource properties (RPs for short): o o Value (integer) Last operation performed (string) November, 2006 public interface Math { public void add(int a); public void subtract(int a); public int getValueRP(); } The MathService web service MathService •Add() & substract() operation on the resource propertiesContained in the resource Void add(int a) Void sub(int a) MathResource Client Int value String last Op •The Client interacts with the stateless Web service STATELESS •GT4 suplies a resource home called ServiceResourceHome •When asked for a resource, this special type of resource home always returns service object GT4 ServiceResourceHome STATEFUL November, 2006 Step 1: Define the Interface in WSDL • WSRF and GT4-specific features of WSDL Resource properties The WSDL Preprocessor No bindings: Bindings are an essential part of a normal WSDL file. However, we don't have to add them, they are generated automatically by a GT4 tool that is called when we build the service • Namespace mappings WSDL is that it's language-neutral. Because we need to refer to the interface defined in WSDL from some specific language we need to: o o map WSDL namespaces to specific language (Java packages) $EXAMPLES_DIR/namespace2package.properties November, 2006 Step 1: Define the Interface in WSDL <?xml version="1.0" encoding="UTF-8"?> <!--===== Headers ===========--> <definitions name="MathService" <wsdl:import namespace=http://<URL-of-wsrf-WS-ResourceProperties.wsdl> location="../../wsrf/properties/WS-ResourceProperties.wsdl" /> <!--===== T Y P E S ===========--> <!-- REQUESTS AND RESPONSES --> <types> <!– LIST … OF MESSAGES --> … <!-- RESOURCE PROPERTIES --> </types> … name="AddInputMessage"> <message <!--===== M E S S A G E S =====--> <part name="parameters" element="tns:add"/> <message > </message> </message> … … <!--===== P O R T T Y P E ======--> <portType name="MathPortType" <!– LIST OF OPERATIONS --> wsdlpp:extends="wsrpw:GetResourceProperty“ wsrp:ResourceProperties="tns:MathResourceProperties"> > <operation name="add"> … <input message="tns:AddInputMessage"/> </portType> <output message="tns:AddOutputMessage"/> </definitions> </operation> November, 2006 … $EXAMPLES_DIR/schema/examples/MathService_instance/Math.wsdl Step 2: Implementing the Service • The QNames interface o QNames includes a namespace and a local name. o For example, the QName of the Value RP is: {http://www.globus.org/namespaces/examples/co re/MathService_instance}Value $EXAMPLES_DIR/org/globus/examples/services/co re/first/impl/MathQNames.java • The service implementation • November, 2006 $EXAMPLE_DIR/org/globus/examples/services/cor e/first/impl/MathService.java Step 2: Implementing the Service package org.globus.examples.services.core.first.impl; import java.rmi.RemoteException; Import <org.globus….> public class MathService implements Resource, ResourceProperties { } public MathService() throws RemoteException { /* Create /* Resource Property set */ RP set */ this.propSet = new SimpleResourcePropertySet( private ResourcePropertySet propSet; MathQNames.RESOURCE_PROPERTIES); /* Constructor. Initializes RPs */ /* Initialize the RP's */ public MathService() try {throws RemoteException {…} ResourceProperty valueRP = /* Get/Setters for the RPs */ new ReflectionResourceProperty( … MathQNames.RP_VALUE, "Value", this); /* Remotely-accessible operations */ this.propSet.add(valueRP); … setValue(0);add(int a) throws RemoteException { public AddResponse /* Required by interface ResourceProperties */ value… += a; public ResourcePropertySet getResourcePropertySet() { public int getValue() { e) { } catch (Exception lastOp = "ADDITION"; return this.propSet; return value; throw new RuntimeException(e.getMessage()); } } return } new AddResponse(); } November, 2006 Step 3: Configuring the deployment in WSDD (and JNDI) • The WSDD deployment descriptor The file that tells the Web Services container how it should <?xml version="1.0" encoding="UTF-8"?> publish our web service <deployment name="defaultServerConfig" <?xml version="1.0" encoding="UTF-8"?> xmlns="http://xml.apache.org/axis/wsdd/" deployment descriptor is written in WSDD format (Web Service <jndiConfig xmlns="http://wsrf.globus.org/jndi/config"> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" Deployment Descriptor) xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <service name="examples/core/first/MathService"> • The JNDIname="home" deployment file specifies: <resource type="org.globus.wsrf.impl.ServiceResourceHome"> <service name="examples/core/first/MathService" <resourceParams> what resource home our service has to use to get a hold of provider="Handler" use="literal" style="document"> resources. <parameter name="className“ <parameter> value="org.globus…..core.first.impl.MathService"/> parameters related to how the resource home manages those <name>factory</name> <wsdlFile>share/schema/examples/…/Math_service.wsdl</wsdlFile> resources. <value>org.globus.wsrf.jndi.BeanFactory</value> <parameter name="allowedMethods" value="*"/> </parameter> Here we use the standard GT4 ServiceResourceHome which <parameter name="handlerClass" value="org.globus.axis.providers.RPCProvider"/> always returns service object <parameter name="scope" value="Application"/> </resourceParams> <parameter name="providers" value="GetRPProvider"/> <parameter name="loadOnStartup" value="true"/> </resource> </service> </service> </jndiConfig> November, 2006 Step 4: Create & deploy a GAR file Service Interface (WSDL) Service Service Service Implementation Implementation Implementation (java) (java) (java) GT4build build GT4 GT4 build files files files Apache Ant •Provided with the GT4 distribution GAR File Deployment Deployment Files Files WSDD WSDD & &JNDI JNDI Ant Build file build.xml •Provided with GT4 tutorial globus-deploy-gar $EXAMPLES_DIR/org_globus_examples_services_core_first.gar globus-undeploy-gar org_globus_examples_services_core_first ./globus-build-service.sh \ -d org/globus/examples/services/core/first/ \ -s schema/examples/MathService_instance/Math.wsdl NOTE: deployment command must be run with a user that has write November, 2006 permission in $GLOBUS_LOCATION Step 5: Simple Client • create an EndpointReferenceType object representing the endpoint reference of this service. •Obtain a reference to the service'sportType. … •This is done with a stub class called public static void main(String[] args) { MathServiceAddressingLocator that, •given the service's EPR, returns a MathPortType object will allow to contact the Math MathServiceAddressingLocator locator = new that MathServiceAddressingLocator(); portType. . try { String serviceURI=args[0]; •invoke the remote add operation, we simply //step: 1 have to use the add method in the EndpointReferenceType endpoint = new EndpointReferenceType(); MathPortType object. . endpoint.setAddress(new Address(serviceURI)); //step: 2 MathPortType math = locator.getMathPortTypePort(endpoint); //step: 3 math.add(10); System.out.println("Current value:" + math.getValue(new GetValueRP())); } catch (Exception e) { e.printStackTrace(); } November, 2006 Step 5: compile and run the Simple Client 1. Set the environment for the client $ source \ $GLOBUS_LOCATION/etc/globus-devel-env.sh 2. Compile the simple client $ javac –classpath \ ./build/stubs/classes/:$CLASSPATH \ org/globus/examples/clients/MathService_instance/Client.java 3. run the simple client $ java \ -classpath \ ./build/stubs/classes/:$CLASSPATH \ org.globus.examples.clients.MathService_instance.Client \ http://127.0.0.1:8080/wsrf/services/examples/core/first/MathService November, 2006 Test your knowledge 1. What is OGSA, WSRF, GT4 ? 2. How does GT4 related to OGSA and WSRF? 3. which standardization body are involved? Who is doing what ? 4. What are the WSRF specific part to be added to the a standard WSDL 5. what is the role of the mapping 6. What is the role of the Qname 7. what is the Role of WSDD and JNDI 8. what are the steps to do to be able to use the service 9. What will happened if multiple clients try to use the first implementation ? 10.What are the limits of this first implementation ? November, 2006