grid computing, b. wilkinson, 20043b.1 web services part ii
TRANSCRIPT
![Page 1: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/1.jpg)
Grid Computing, B. Wilkinson, 2004 3b.1
Web ServicesPart II
![Page 2: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/2.jpg)
Grid Computing, B. Wilkinson, 2004 3b.2
Web Services
From http://www.globus.org
![Page 3: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/3.jpg)
Grid Computing, B. Wilkinson, 2004 3b.3
Address of a Web Service
• URIs
Example (URL)
http://www.cs.wcu.edu/webservices/math1
This does not exist, and if did, would only be meaningful to software.
![Page 4: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/4.jpg)
Grid Computing, B. Wilkinson, 2004 3b.4
Client-Service Implementation
• Suppose we have found the service and have its WSDL description, i.e. got past step 4.
• In the implementation, it is convenient to use stubs - java classes suitable for web services defined with WSDL.
![Page 5: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/5.jpg)
Grid Computing, B. Wilkinson, 2004 3b.5
Client Stub
• Between the client code and the network is a client stub, sometimes called client proxy.
• The client stub is responsible for taking a request from the client and converting the request into a SOAP request on the network - marshalling.
• Also responsible for receiving SOAP responses
on network and converting to a suitable form for client.
![Page 6: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/6.jpg)
Grid Computing, B. Wilkinson, 2004 3b.6
Server Stub
• Between the service and the network is a server stub, sometimes called a skeleton.
• Responsible for receiving a SOAP request from the client stub and converting it into a suitable form for the service -unmarshalling.
• Also converts the response from the service into a SOAP message for the client stub.
![Page 7: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/7.jpg)
Grid Computing, B. Wilkinson, 2004 3b.7
Web Service Application
![Page 8: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/8.jpg)
Grid Computing, B. Wilkinson, 2004 3b.8
Steps
• Client calls client stub.
• SOAP request sent across network
• Server stub receives request and sends request to service
• Service send result to serve stub
• Server stub sends result across network to client stub.
• Client stub sends result to client.
![Page 9: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/9.jpg)
Grid Computing, B. Wilkinson, 2004 3b.9
Web Service Application
Call client stubSOAP
requestRequest service
Result returnedSOAP
responseClient receives result
![Page 10: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/10.jpg)
Grid Computing, B. Wilkinson, 2004 3b.10
Web Service Description
• Need a way of formally describing a service, what is does, how it is accessed, etc.
• An Interface Description language (IDL)
![Page 11: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/11.jpg)
Grid Computing, B. Wilkinson, 2004 3b.11
Web Service Definition Language (WSDL)
A W3C standard XML document that describes three fundamental properties of a service:
• What it is - operations (methods) it provides.• How it is accessed - data format, protocols.• Where it is located - protocol specific network
address.
![Page 12: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/12.jpg)
Grid Computing, B. Wilkinson, 2004 3b.12
Elements of a WSDL document
![Page 13: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/13.jpg)
Grid Computing, B. Wilkinson, 2004 3b.13
Parts of a WSDL Document
Parts of an WSDL document::• Root definitions - namespaces
• portType definitions - abstract definition of service
• Message definitions - parameters in method signature
• Type definitions - data types
• Binding definitions - to protocols I.e. SOAP over HTTP
• Service definitions - where service is, ports
![Page 14: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/14.jpg)
Grid Computing, B. Wilkinson, 2004 3b.14
portType
Describes “What” - an abstract definition of service operation. Uses the elements:
• message definitions - a set of parameters referred to by method signature, decomposed into parts
• type definitions - defines all data types used
![Page 15: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/15.jpg)
Grid Computing, B. Wilkinson, 2004 3b.15
Binding
Describes “how” the elements in abstract interface (portType) are converted in actual data representations and protocols e.g. SOAP over HTTP.
![Page 16: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/16.jpg)
Grid Computing, B. Wilkinson, 2004 3b.16
port and service
• Describes “where” service is.
• port - describes how a binding is deployed at the endpoint of a network
• service - a named collection of ports
![Page 17: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/17.jpg)
Grid Computing, B. Wilkinson, 2004 3b.17
Root definitions
<?xml version=“1.0”?>
<definitions name=“PriceCheck”
targetNamespace=“http://www.skatestown.com/services/PriceCheck”
xmlns:pc=“http://www.skatestown.com/services/PriceCheck”
xmlns:avail=“http://www.skatestown.com/ns/availability”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”
xmlns:soap=“http://schemas.xmlsoap.org/wsdl/”>
.
<!-- other definitions -->
.
</definitions>
![Page 18: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/18.jpg)
Grid Computing, B. Wilkinson, 2004 3b.18
portType definitions
<!-- Port type definitions -->
<portType name=“PriceCheckPortType”>
<operation name=“checkPrice”>
<input message=“PriceCheckRequest”/>
<output message=“PriceCheckResponse”/>
</operation>
</portType>
![Page 19: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/19.jpg)
Grid Computing, B. Wilkinson, 2004 3b.19
Message definitions
<!-- Message definitions -->
<message name=“PriceCheckRequest”>
<part name=“sku” type=“xsd:string”/>
</message>
<message name=“PriceCheckResponse”>
<part name=“result” type=“avail:availabilityType”/>
</message>
![Page 20: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/20.jpg)
Grid Computing, B. Wilkinson, 2004 3b.20
Type definitions
<!-- Type definitions -->
<types>
<xsd:schema targetNamespace=“http://www.skatestown.com/ns/availability”
xmlns:xsd=“http://www.w3.org/23001/XMLSchema”>
<xmlns:complexType name=“availabilityType”>
<xsd:sequence>
<xsd:element name=”sku” type=“xsd:string”/>
<xsd:element name=“price” type=“xsd:double”/>
<xsd:element name=“quantityAvailable” type=“xsd:integer”/>
</xsd:sequence>
</xmlns:complexType>
</xsd:schema>
</types>
![Page 21: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/21.jpg)
Grid Computing, B. Wilkinson, 2004 3b.21
Binding definitions
<!-- Binding definitions -->
<binding name=“PriceCheckSOAPBinding” type=“pc:PriceCheckPortType”>
<soap:binding style=“rpc”
transport=“http://schemas.xmlsoap.org/soap/http”/>
<operation name=“checkPrice”>
<soap:operation soapAction=“”/>
<input>
<soap:body use=“encoded”
namespace=“http://www.skatestown.com/services/PriceCheck”
encodingStype=“http://schemas/xmlas.xmlsoap.org/soap/encoding?”/>
</input>
<output>
<soap:body use=“encoded”
namespace=“http://www.skatestpwn.com/services/PriceCheck”
encodingStype=“http://schemas/xmlas.xmlsoap.org/soap/encoding?”/>
</output>
</operation>
![Page 22: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/22.jpg)
Grid Computing, B. Wilkinson, 2004 3b.22
Service definitions
<!-- Service definitions -->
<service name=“PriceCheckService”>
<port name=“PriceCheck” binding=“pc:PriceCheckSOAPBinding”>
<soap:address
location=
“http://localhost:8-8-/axis/services/PriceCheck”/>
</port>
</service>
</definitions>
![Page 23: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/23.jpg)
Grid Computing, B. Wilkinson, 2004 3b.23
Building a ServicePreliminary to Assignment 1
To build (deploy) a service one has to create:
• a WSDL document for the service• the client stub• the server stub
and test with a client.
![Page 24: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/24.jpg)
Grid Computing, B. Wilkinson, 2004 3b.24
Java Web Service (JWS)(The easy way to deploy a service)
• With JWS facility, service code with jws extension in the Axis-enabled web application is interpreted a web service.
• .jws file automatically compiled if necessary when service called.
• Simple and used in assignment 1 but has limitations.
![Page 25: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/25.jpg)
Grid Computing, B. Wilkinson, 2004 3b.25
• Could actually use the web service after deployment with JWS without using a WSDL file nor stubs!
• Just use the service URL which would have a .jws extension - need some code in client and service to make SOAP calls.
![Page 26: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/26.jpg)
Grid Computing, B. Wilkinson, 2004 3b.26
WSDL from Code
• One can write the service code (as a class or interface) and then use tools to generate the WSDL document.
– Axis Java2WSDL program generates WSDL file (and its scheme).
![Page 27: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/27.jpg)
Grid Computing, B. Wilkinson, 2004 3b.27
WSDL from Running Service
• Another Axis tool can generate the WSDL document.directly from a running deployed service.
• add ?wsdl onto service URL.
• Example of this in assignment 1
![Page 28: Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II](https://reader030.vdocuments.us/reader030/viewer/2022032707/56649e4e5503460f94b44698/html5/thumbnails/28.jpg)
Grid Computing, B. Wilkinson, 2004 3b.28
Stubs from WSDL
• If we have the WSDL document for the service, can use tools to generate client and server stubs:
– Axis WSDL2Java program generates stubs for use on client and server
– Example of this in assignment 1.