35
03-60-569 1 Web Service Jianguo Lu

03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

Embed Size (px)

Citation preview

Page 1: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 1

Web Service

Jianguo Lu

Page 2: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 2

SW and WS

WWW(HTML, HTTP, URI)

Semantic Web(RDF, RDFS, OWL)

Web Service(WSDL, SOAP, UDDI)

SWS, Intelligent Web

Agent

Page 3: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 3

Service Oriented Architecture

Discovery agency

ProviderRequesterinteract

findpublish

Page 4: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 4

A concrete SOA

UDDIRegistry

WSDL

Web Service ProviderSOAP

ServiceConsumer

Points to description

publish

DescribesService

FindsService

Communicates withXML Messages

Page 5: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 5

Web service definitions

• A web service is an application accessible to other applications over the internet

• “Self-contained, modular business applications that have open, internet-oriented, standard based interfaces”—UDDI Consortium

• “a software application identified by a URI, whose interfaces and bindings are capable of being defined, described, and discovered as XML artifacts. A web service supports direct interactions with other software agents using XML-based messages exchanged via Internet-based protocols.” --W3C

• “a standardized way of integrating Web-based applications using the XML, SOAP, WSDL, and UDDI open standards over an Internet protocol backbone. XML is used to tag the data, SOAP is used to transfer the data, WSDL is used for describing the service available, and UDDI is used for listing what services are available”--Webopedia

More concrete

Page 6: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 6

Web Service definition

• “encapsulated, loosely coupled, contracted software objects offered via standard protocols” --ZapThink Research– Encapsulated

• Web Service implementation is invisible to entities outside the service

• Exposes an interface but hides details

– Loosely Coupled• Service and consumer software can be redesigned independently

Page 7: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 7

Why Web Service

• “Just as the web revolutionized how users talk to applications, XML transforms way applications talk to each other”—Bill Gates

• “Web services will be bigger than Java or XML”. – Rod Smith, VP of Emerging Technology, IBM

• “Web services are expected to revolutionize our life in much the same way as the internet has during the past decade or so.”—Gartner

• “By 2004, 40% of the financial services transactions and 35% of online government services will be web service-based.” –Gartner

• There are web services for Google, Amazon, Fedex, EBay … …

• It is another hype?

Page 8: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 8

History of Interface Definition Languages (IDLs)• IDL has a long history in distributed computing

– DCE (Distributed Computing Environment) – CORBA IDL, OMG (Object Management Group)– COM IDL, Microsoft– WSDL

• Traditional IDLs– Specifying what to call: the operation names, their signatures,

exceptions. This is the job of IDL. – Agreeing on how to make an invocation: the mechanism of

naming, activation, data encoding. This is what distributed standards such as CORBA or COM do.

• WSDL needs to specify the both: the operation provided by the service, and the mechanism to access the service.

Page 9: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 9

Web Service Description Language

• WSDL defines– What the service is: the operations the service provides,

including the signature of the operation –- what– Access specification: details of the data format and protocol

necessary to access the service’s operation–- how– Location of the service: details of the network address, such as a

URL –- where

Page 10: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 10

WSDL functionality view

OperationPort Type

MessageBinding

Port Service

Supports

Input & Output

Provides

How to encode

Formats & ProtocolsHow to invoke

Implements

Interface

Endpoints

–What–how–where

Legend:

In WSDL 2.0, portType is changed to interface.

Page 11: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 11

WSDL document structure viewWSDL specification

abstract part

types

messages

operations

port types

concrete part

bindings

services andports

Page 12: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 12

<?xml version="1.0"?> <definitions name="Procurement" targetNamespace="http://example.com/procurement/definitions" xmlns:tns="http://example.com/procurement/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" >

<message name="OrderMsg"> <part name="productName" type="xs:string"/> <part name="quantity" type="xs:integer"/> </message>

<portType name="procurementPortType"> <operation name="orderGoods"> <input message = "OrderMsg"/> </operation> </portType>

<binding name="ProcurementSoapBinding" type="tns:procurementPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="orderGoods"> <soap:operation soapAction="http://example.com/orderGoods"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding>

<service name="ProcurementService"> <port name="ProcurementPort" binding="tns:ProcurementSoapBinding"> <soap:address location="http://example.com/procurement"/> </port> </service></definitions>

port and service

binding

operation and port type

messages

abstract part

concrete part

Page 13: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 13

<definitions … name="BNQuoteService"><message name="getPriceRequest"> <part name="isbn" type="xsd:string"/> </message><message name="getPriceResponse"> <part name="return" type="xsd:float"/>

</message><portType name="BNQuotePortType"><operation name="getPrice">

<input name="getPrice" message="tns:getPriceRequest"/><output name="getPriceResponse" message="tns:getPriceResponse"/>

</operation></portType>

<binding name="BNQuoteBinding" type="tns:BNQuotePortType"><soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getPrice"><soap:operation/>

<input> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:xmethods-BNPriceCheck"/>

</input><output> <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:xmethods-BNPriceCheck"/></output></operation>

</binding><service name="BNQuoteService">

<documentation>Returns price of a book at BN.com given an ISBN number</documentation> <port name="BNQuotePort" binding="tns:BNQuoteBinding">

<soap:address location="http://services.xmethods.net:80/soap/servlet/rpcrouter"/></port>

</service></definitions>

Page 14: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 14

Visual representation

Page 15: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 15

WSDL structure—interconnection viewWSDL document

Types (type information for the document, e.g., XML Schema)

Message 1 Message 4Message 3Message 2

Operation 1 Operation 3Operation 2

Message 5

Interface (abstract service)

binding 1

endpoint 1

binding 2

endpoint 2

binding 3

endpoint 3

binding 4

endpoint 4

Service (the interface in all its available implementations)

Ab

stra

ct d

escr

ipti

on o

f th

e se

rvic

eC

oncr

ete

des

crip

tion

of

th

e se

rvic

e

By Gustavo Alonso and Cesare Pautasso

Page 16: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 16

A WSDL example

<?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:wsi="http://ws-i.org/schemas/conformanceClaim/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"><types> …</types><message> …</message> <message> … </message><portType> … </portType><binding> … </binding><service> … </service></definitions>

This example is from Steve Graham et al: Building Web Services with Java

Page 17: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 17

PortType

<portType name="PriceCheckPortType">

<operation name="checkPrice">

<input message="pc:PriceCheckRequest"/>

<output message="pc:PriceCheckResponse"/>

</operation>

</portType>

• <portType> defines the interface of web service. Just as Java Interface declaration;

– Will change the name to <interface> in WSDL 2.0.

• It consists of a sequence of operation declarations.

• WSDL can have zero or more <portType>s. Typically just one.

• It has a name attribute, must be unique. – The binding will refer the portType by its name

Page 18: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 18

Operation

• Operation defines a method signature;– Name, input, output, and fault

• Input and output elements are associated with messages; • Different combinations of input/output define different

operations types.

<operation name="checkPrice">

<input message="pc:PriceCheckRequest"/>

<output message="pc:PriceCheckResponse"/>

</operation>

Page 19: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 19

Operation Types• The request-response type is the most common operation type, but WSDL

defines four types:– Request-response: The operation can receive a request and will return a response

<operation name="checkPrice"> <input message="pc:PriceCheckRequest"/> <output message="pc:PriceCheckResponse"/> </operation>

– One-way: The operation can receive a message but will not return a response. <operation name=“cancellation”> <input message=“tns:orderCancellation”/></operation>

– Notification:The operation can send a message but will not wait for a response<operation name=“notification”> <output message=“tns:promotionNotification”/></operation>

– Solicit-response:The operation can send a request and will wait for a response<operation name=“cancellation”> <output message=“tns:pushThis”/> <input message=“tns:reponseToPush”/></operation>

• Different types are defined by decided by the order/occurrences of input and output.

Page 20: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 20

Messages

<message name="PriceCheckRequest"> <part name="sku" element="avail:sku"/> </message> <message name="PriceCheckResponse"> <part name="result" element="avail:StockAvailability"/> </message>

• Describe the abstract form of input, output, or fault. • A WSDL file can have zero or more messages. • Each message has a name, which is unique within the document. • Each message has a collection of <part> elements.

Page 21: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 21

Part

<part name="sku" element="avail:sku"/>

<part name="result" element="avail:StockAvailability"/>

• A <part> element can be compared to a parameter in a method.

• A part element has two properties: one is name, the other is its kind.

• Kind can be a type or an element– Element refers to an element defined in XML Schema– Type refers to a simpleType or a complexType in XSD

• In corresponding sku definition is: <xsd:element name="sku" type="xsd:string" />

Page 22: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 22

Types in WSDL

<types> <xsd:schema targetNamespace="http://www.skatestown.com/ns/availability" > <xsd:element name="sku" type="xsd:string" /> <xsd:complexType name="availabilityType"> <xsd:sequence> <xsd:element ref="avail:sku"/> <xsd:element name="price" type="xsd:double"/> <xsd:element name="quantityAvailable" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> <xsd:element name="StockAvailability" type="avail:availabilityType" /> </xsd:schema> </types>

• The default type system is XML Schema; – Theoretically you can use any type system, such as Java types.

• To be used in<part> element;• We can also import XML Schemas

Page 23: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 23

SOAP request message

<soapenv:Envelope xmlns:soapenv=“http://schema.xmlsoap.org/soap/evelope/” xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”> <soapenv:Body> <sku xmlns=“http://www.skatestown.com/ns/availability”>123</sku> </soapenv:Body></soapenv:Envelope>

• Relevant part of the WSDL file:<xsd:element name="sku" type="xsd:string" />

<message name="PriceCheckRequest"> <part name="sku" element="avail:sku"/> </message>

<operation name="checkPrice"> <input message="pc:PriceCheckRequest"/> <output message="pc:PriceCheckResponse"/></operation>

Envelope

Body

MessagePayload

Header #1

Header #0

Page 24: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 24

SOAP response message

<soapenv:Envelope xmlns:soapenv= … xmlns:xsd=… xmlns:xsi=… > <soapenv:Body> <StockAvailability xmlns= … > <sku> 123 </sku> <price xmlns=“”>100.00</price> <quantityAvailable xmlns=“”>

12 </quantityAvailable> </StockAvailability> </soapenv:Body></soapenv:Envelope>

• Relevant part of the WSDL file:<xsd:complexType name="availabilityType"> <xsd:sequence> <xsd:element ref="avail:sku"/> <xsd:element name="price"

type="xsd:double"/> <xsd:element name="quantityAvailable"

type="xsd:integer"/> </xsd:sequence></xsd:complexType>

<message name="PriceCheckResponse"> <part name="result"

element="avail:StockAvailability"/></message>

<operation name="checkPrice"> <input message="pc:PriceCheckRequest"/> <output

message="pc:PriceCheckResponse"/></operation>

Page 25: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 25

Binding

<binding name="PriceCheckSOAPBinding" type="pc:PriceCheckPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="checkPrice"> <soap:operation soapAction = "http://www.skatestown.com/services/PriceCheck/checkPrice" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding>• Name of the binding should be unique;• Link to the portType is achieved by the portType name

– This explains why portType name should be unique.• Typically, there is only one <binding> element;• Defines:

– Invocation style– SOAPAction– Input message appearance– Output message appearance

Page 26: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 26

Invocation Style

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

• All operations in this portType use SOAP messages;• The style attribute indicates that operations will follow a

document-centric approach;– The body of the SOAP message is a straight XML document;– This is in contrast to RPC style;

Page 27: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 27

RPC style and document style

• When using Document style, you can structure the contents of the SOAP Body any way you like.

• When using RPC style, the contents of the SOAP Body must conform to a structure that indicates the method name and contains a set of parameters. It looks like this:

<env:Body> <m:methodName xmlns:m="someURI"> <m:m1>...</m:m1> <m:m2>...</m:m2> ... </m:methodName> </env:Body>

• Document style: <env:Body> <m:purchaseOrder xmlns:m="someURI"> ... </m:purchaseOrder> </env:Body>

• RPC style: <env:Body> <m:placeOrder xmlns:m="someURI">

<m:purchaseOrder> ... </m:purchaseOrder> </m:placeOrder> </env:Body>

Page 28: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 28

Service <service name="PriceCheck"> <port name="Pricecheck" binding="pc:PriceCheckSOAPBinding"> <documentation> <wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.0" /> </documentation> <soap:address location = "http://www.skatestown.com/services/PriceCheck"/> </port> </service>

• Contains a set of <port> elements;• <port> combines the interface binding with a network address

specified by a URI;• A web service can be available in different web addresses;

Page 29: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 29

Implications of WSDL

• Interaction mode: – Not only expose the operations to invoke, but also a service

behave like a client. Blurring the distinction between a client and server.

• Does not presume a particular form of communication, protocol, data encoding.– You can use HTTP, or SMTP, or FTP, …– You can use SOAP, or others

Page 30: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 30

WSDL 1.1 vs WSDL 2.0

WSDL 2.0• Endpoints• Interfaces

– Support for Interface inheritance

• Removed operation overloading

• Messages defined through Types• Operations nested inside Interfaces• Endpoints nested inside Bindings

• 9 Message Exchange Patterns

• New: Features and Properties

WSDL 1.1• Ports• PortTypes

• Supported operation overloading

• Messages composed of Parts• 6 Top level elements: Messages,

Operations, PortTypes, Bindings, Ports and Services.

• 4 Transmission Primitives – (One-way, Request-Response,

Solicit-Response, Notification)

Page 31: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 31

Tools

• WSDL parser: WSDL4J• Apache Axis

– Invoking SOAP web service;– Translate WSDL to Java, and vice versa;– Mapping Java into XML Schema, and vice versa;– Host web service;– API for manipulating SOAP;

Page 32: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 32

Mapping between Java and WSDL in JAX-RPC

<message name="fooRequest"><part name="para1" type="xs:string"/>

</message><message name="fooResponse">

<part name="para2" type="xs:float"/></message><portType name="FooBar">

<operation name="foo"><input message="y:fooRequest"/><output message="y:fooResponse"/>

</operation></portType>

• A simple example

public interface FooBar extends java.rmi.Remote{ public float foo(java.lang.String para1)

throws java.rmi.RemoteException;}

Page 33: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 33

• Multiple input parameters

public interface FooBar extends java.rmi.Remote{ public float foo(String param1, int param2, boolean param3)

throws java.rmi.RemoteException;}

<message name="fooRequest"><part name="param1" type="xs:string"/><part name="param2" type="xs:int"/><part name="param3" type="xs:boolean"/>

</message><message name="fooResponse">

<part name="para2" type="xs:float"/></message><portType name="FooBar">

<operation name="foo"><input message="y:fooRequest"/><output message="y:fooResponse"/>

</operation></portType>

Page 34: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 34

• Multiple output parameters<message name="fooRequest">

<part name="param1" type="xs:string"/></message><message name="fooResponse">

<part name="param2" type="xs:int"/><part name="param3" type="xs:boolean"/><part name="param4" type="xs:float"/>

</message><portType name="FooBar">

<operation name="foo"><input message="y:fooRequest"/><output message="y:fooResponse"/>

</operation></portType>

public interface FooBar extends java.rmi.Remote{ public void foo(String param1, javax.xml.rpc.holders.IntHolder param2,

javax.xml.rpc.holders.BooleanHolder param3,javax.xml.rpc.holders.FloatHolder param3,

) throws java.rmi.RemoteException;}

Page 35: 03-60-5691 Web Service Jianguo Lu. 03-60-5692 SW and WS WWW (HTML, HTTP, URI) Semantic Web (RDF, RDFS, OWL) Web Service (WSDL, SOAP, UDDI) SWS, Intelligent

03-60-569 35

Mapping XML Schema to Java

public class Address {private String street;private String city;public String getCity(){return city; }public void setCity(String c){city=c; }… …

}

<complexType name="Address"><sequence>

<element name="city" nillable="true" type="xsd:string"/><element name="street" nillable="true" type="xsd:string"/>

</sequence></complexType>

• Class has to have correct getters and setters;• In axis, you can use WSDL2Java and Java2WSDL to do the mapping.