No Slide Title

Download Report

Transcript No Slide Title

Discovering E-Services Using UDDI in
SELF-SERV
Quan Z. Sheng, Boualem Benatallah, Rayan Stephan,
Eileen Oi-Yan Mak, Yan Q. Zhu
School of Computer Science and Engineering
The University of New South Wales
Sydney, Australia
Beijing, 2002
Outline
• SELF-SERV overview
• Simple Object Access Protocol (SOAP)
• Web Service Description Language (WSDL)
• Universal Description, Discovery and Integration (UDDI)
• Service Discovery Engine in SELF-SERV
• Conclusion
Beijing, 2002
SELF-SERV overview
• SELF-SERV (compoSing wEb accessibLe inFormation &
buSiness sERVices) is a framework for dynamic and peer-to-peer
provisioning of Web services.
• SELF-SERV distinguishes three types of services: elementary
services, composite services, and service communities.
• Composite service aggregates multiple Web service, based on
statecharts.
• Service community is a powerful concepts for composing
potential large number of dynamic services.
Beijing, 2002
SELF-SERV overview Architecture
User Interface
Service Manager
UDDI Registry
Communication Bus
Elementary Service
Composite Service
Service Community
Beijing, 2002
SELF-SERV overview Architecture (cont.)
Service Manager
SELF-SERV Interface
SELF-SERV
requests/results
Service Discovery Engine
service descriptions
UDDI
Registry
Service Editor
Service Deployer
Communication Bus
Communities
CS1
Composite
services
Pool of
Services
CS2
is registered
with
Elementary
services
ES1
workflow
Legend
C3
C2
C1
is composed of
ES2
database
Coordinator.1
ES3
applications
Coordinator.2
ES4
web-accessible programs
Coordinator.n
Wrapper
Beijing, 2002
SOAP: Simple Object Access Protocol
• An XML-based mechanism for exchanging structured
data between network applications
• composes 3 parts
– envelope defines a framework for describing what is in a message
and how to process it
– encoding rules express instances of application-defined data types
– a convention represents remote procedure calls and responses.
• 2 types of messages, Request/Response
Beijing, 2002
SOAP: an example of a request
POST /carRenting HTTP/1.1
Host: www.axac.com
Content-Type: text/xml; charset=“utf-8”
Content-Length: 127
SOAPAction: “http://www.anywhere.com/rentCar”
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope”
SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding”>
<SOAP-ENV:body>
<m:rentCar xmlns:m=“http://www.anywhere.com/rentCar”>
<customer>Boualem Benatallah</customer>
<rentalDate>18/05/2002</rentalDate>
<returnDate>20/05/2002</returnDate>
</m:rentCar>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Beijing, 2002
SOAP: an example of a reply
HTTP/1.1 200 OK
Content-Type: text/xml; charset=“utf-8”
Content-Length: 234
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope”
SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding”>
<SOAP-ENV:Body>
<m:RentcarResponse xmlns:m=“http://www.anywhere.com/rentCar”>
<rentalFees>234.00</rentalFees>
</m:RentcarResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Beijing, 2002
WSDL: Web Service Description Language
• A general purpose XML language for describing
interface, protocol bindings and the deployment details
of Web services
• a WSDL document describes how to invoke a service by
providing information on
– the data being exchanged
– the sequence of messages for an operation
– the location of the service and
– the description of bindings (e.g., SOAP/HTTP)
Beijing, 2002
WSDL: service description structure
Service
Implementation
Definition
Service
Port
Binding
Service
Interface
Definition
Port Type
Message
Type
Beijing, 2002
WSDL: elements
• Types: contains the complex data types used in message
• Messages: defines the input/output parameters of an
operation.
• Port type: defines the operations of a Web service
<definitions name="carRenting" ....>
<types>
<schema targetNamespace="http://example.com/carRenting.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="Customer">
<complexType>
<all><element name="Name" type="string"/>
<element name="CreditCardNo" type="string"/>
</all>
</complexType>
</element>
</schema>
</types>
Beijing, 2002
WSDL: elements (cont.)
….
<message name="carRentingInput">
<part name="customer" element="tns:Customer"/>
<part name="rentalDate" type="xsd:date"/>
<part name="returnDate" type="xsd:date"/>
</message>
<message name="carRentingOutput">
<part name="rentalFee" type="xsd:float"/>
</message>
<portType name="carRentingPortType">
<operation name="RentCar">
<input message="tns:carRentingInput"/>
<output message="tns:carRentingOutput"/>
</operation>
</portType>
Beijing, 2002
WSDL: elements (cont.)
• Binding: describes the protocol, data format, security
and other attributes for a particular service interface.
• Port: an address for a binding
• Service: a collection of WSDL port elements
<binding name="carRentingSoapBinding" type="tns:carRentingPortType">
<soap:binding style="document” transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name=”rentCar">
<soap:operation soapAction="http://www.anywhere.com/rentCar"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
…
<service name="CarRentingService">
<port name="carRentingPort" binding="tns:carRentingSoapBinding">
<soap:address location="http://example.com/carRenting"/> </port>
...
</service>
Beijing, 2002
UDDI: Universal Description, Discovery and Integration
• UDDI is a specification that defines a service registry of
available Web services
• Jointly proposed by Microsoft, Ariba and IBM
• SOAP can be used to query UDDI for services
• UDDI is defined through an XML schema, identifying 4
core types of information
• UDDI APIs specification: publishing/discovering (e.g.,
UDDI4J)
Beijing, 2002
UDDI: data structure
businessEntity
tModel
businessService
bindingTemplate
Beijing, 2002
UDDI: an example of business registration
<businessList generic=“1.0” operator=“Microsoft operator”
truncated=“false” xmlns=“urn:uddi-org:api”>
<businessInfos>
<businessInfo businessKey=“089B5-ER8-AC09-599CF7”>
<name>Anywhere Ltd</name>
<description xml:lang=“en”>all kinds of cars, trucks, motorbikes for
renting</description>
<serviceInfos>
<serviceInfo businessKey=“ 089B5-ER8-AC09-599CF7”
serviceKey=“12FF-2AF3-45FB-09AF7”>
<name>carRental</name>
</serviceInfo>
………….
</serviceInfos>
</businessInfo>
</businessInfos>
</businessList>
Beijing, 2002
UDDI: an example of SOAP message acquiring
information from the UDDI Registry
<Envelope xmlns:s=“http://schemas.xmlsoap.org/soap/envelope”>
<Body>
<find_business xmlns=“urn:uddi-org:api” generic=“1.0”>
<name>Anywhere Ltd</name>
</find_business>
</Body>
<Envelope>
For details
http://www.uddi.org
http://www-3.ibm.com/services/uddi
Beijing, 2002
Integrating UDDI with WSDL and SOAP
Service Provider
Invoke
Publish
SOAP Request
WSDL
SOAP Response
SOAP Request
SOAP Response
SOAP Request
UDDI
Registry
SOAP Response
WSDL
Service
Requestor
Find
Service registration and discovery
Beijing, 2002
Service Discovery Engine in SELF-SERV
• Service discovery engine facilitates service advertisements
and discovery.
• UDDI, together with WSDL and SOAP are used to
implement the discovery engine.
• IBM Web Service ToolKit (WSTK) 2.4 benefits a lot of the
implementation.
Beijing, 2002
Service Discovery Engine in SELF-SERV (cont.)
• IBM WSTK is a showcase package for Web service related
emerging technologies. It provides several tools.
– A lightweight application server called “embedded WebSphere”.
– A WSDL generation tool can encapsulate legacy code (e.g., Java
classes, COM) as Web services.
– The UDDI4J (a Java API) enables operations to UDDI registry.
Beijing, 2002
Service Discovery Engine in SELF-SERV (cont.)
public class publishService{
String serviceDefinitionWSDL=”http://www.cse.unsw.edu.au/SELFSERV/wsdl/carRental.wsdl”
Creating WSDL descriptions for Web services
String• serviceInterfaceWSDL=”http://www.cse.unsw.edu.au/SELF-SERV/wsdl/carRental-interface.wsdl”;
String soapRouter=”http://www.cse.unsw.edu.au/soap/servlet/rpcrouter”;
String serviceDeployment=”http://www.cse.unsw.ed.au/SELFSERV/
– using IBM WSDL generation tool
wsdl/deploymentDescriptor.xml”;
String• inquiryURL=”http://www.cse.unsw.edu.au/services/uddi/inquiryapi”;
Deploying and publishing Web service
String publishURL=”https://www.cse.unsw.edu.au/services/uddi/publishapi”;
ServiceRegistryProxy srp = new ServiceRegistryProxyinquiryURL, publishURL, username, password);
CategoryList spCatList = new CategoryList();
spCatList.addCategory(TModelKeyTable.UNSPSC, ”84121”,
TModelKeyTable.UNSPSC_TMODEL_KEY);
ServiceProvider sp=new ServiceProvider(“CarRental”, “SELF-SERV service provider example”,
spCatList); sp=srp.publish(sp);
ServiceInterface si=new ServiceInterface(serviceInterfaceWSDL); si=srp.publish(si);
CategoryList sdCatList=new CategoryList();
sdCatList.addCategory(TmodelKeyTable.UNSPSC, “84121”,
TmodelKeyTable.UNSPSC_TMODEL_KEY);
SOAPServiceDefinition sd=new SOAPServiceDefinition(serviceDefinitionWSDL, sdCatList,
serviceDeployment, soapRouter);
sd.createServiceManagerProxy().deployService(sd); srp.publish(sp, sd);}
A Java code fragment for publishing a Web service
Beijing, 2002
Service Discovery Engine in SELF-SERV (cont.)
A screen snapshot for service registry.
Beijing, 2002
Service Discovery Engine in SELF-SERV (cont.)
Locate a service
Execute the service
A screen snapshot for service discovery
and invocation.
Beijing, 2002
Conclusion
• Present the design and implementation of the Service
Discovery Engine in SELF-SERV
• Show how UDDI, WSDL and SOAP complement each other
in Web service advertisement and discovery
• This work is one part of a large research project SELFSERV. Other works of SELF-SERV have also published in
IEEE ICDE02, VLDB2002 etc.
Beijing, 2002