
Hugo Haas <hugo@w3.org>
W3C Web
Services Activity Lead
Charlton Barreto, Adobe Systems Inc.
Member of the W3C Web Services Description & Choreography Working
Groups
ECOWS 2005, Växjö, Sweden, 14 November 2005
Web merchant
A lot of buzzwords…
… justifying some choices:



Built on top of Web technologies:



<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> <m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference> <m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime> </m:reservation> </env:Header> <env:Body> <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> … </p:itinerary> </env:Body> </env:Envelope>
public class MathService
{
static int total=0;
// Add an integer and return the total
public int add(int a)
{
total += a;
return total;
}
// Get the total of all the additions
public int total()
{
return total;
}
}
Deployed with Axis 1.3
import org.apache.axis.client.Call;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.soap.SOAPConstants;
import javax.xml.rpc.ParameterMode;
public class AddClient
{
public static void main(String [] args) throws Exception {
if (args == null || args.length != 1) {
System.err.println("Usage: AddClient <int>");
return;
}
Call call = new Call("http://localhost:8080/axis/MathService.jws");
call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS);
Integer i = new Integer(args[0]);
call.setOperationName("add");
call.addParameter("a", XMLType.XSD_INT, ParameterMode.IN);
call.setReturnType(XMLType.XSD_INT);
Integer ret = (Integer) call.invoke(new Object [] { i });
System.out.println("Added " + i + ". Current total: " + ret);
}
}
hugo@jibboom ~/ws-setup% java AddClient 432
Added 432. Current total: 3468
produces the following HTTP request:
POST /axis/MathService.jws HTTP/1.0
Content-Type: application/soap+xml; charset=UTF-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.3
Host: 127.0.0.1:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 363
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<add soapenv:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<a xsi:type="xsd:int">432</a>
</add>
</soapenv:Body>
</soapenv:Envelope>
resulting in the following HTTP reply:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=16ADA5B3AB2CBE3BA1582201B4F8BC28; Path=/axis
Content-Type: application/soap+xml;charset=UTF-8
Date: Wed, 19 Oct 2005 14:34:48 GMT
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<addResponse soapenv:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<ns1:result xmlns:ns1="http://www.w3.org/2003/05/soap-rpc">addReturn</ns1:result>
<addReturn xsi:type="xsd:int">3468</addReturn>
</addResponse>
</soapenv:Body>
</soapenv:Envelope>
GET /axis/MathService.jws?method=total HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050922 Firefox/1.0.7 (Debian package 1.0.7-1)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.8,fr;q=0.6,de;q=0.4,es;q=0.2
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: JSESSIONID=9B2EB217BEA1C3EB8DEE1FE1F5E283B9
returns:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml;charset=ISO-8859-1
Content-Length: 410
Date: Wed, 19 Oct 2005 14:40:30 GMT
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<totalResponse soapenv:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<totalReturn xsi:type="xsd:int">3468</totalReturn>
</totalResponse>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<totalResponse soapenv:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<totalReturn xsi:type="xsd:int">3468</totalReturn>
</totalResponse>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:totalResponse xmlns:ns1="http://localhost:8080/axis/services/MathServiceDL">
<ns1:totalReturn>3468</totalReturn>
</ns1:totalResponse>
</soapenv:Body>
</soapenv:Envelope>
when deployed with:
style="wrapped" use="literal"
import org.apache.axis.client.Call;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.soap.SOAPConstants;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.message.SOAPHeaderElement;
import org.apache.axis.Constants;
public class AddClientMU
{
public static void main(String [] args) throws Exception {
if (args == null || args.length != 1) {
System.err.println("Usage: AddClient <int>");
return;
}
Call call = new Call("http://localhost:8080/axis/MathService.jws");
call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS);
SOAPHeaderElement header = new SOAPHeaderElement("http://example.com/header",
"very-important-info", "blah");
header.setMustUnderstand(true);
header.setActor(Constants.URI_SOAP12_ULTIMATE_ROLE);
call.addHeader(header);
Integer i = new Integer(args[0]);
call.setOperationName("add");
call.addParameter("a", XMLType.XSD_INT, ParameterMode.IN);
call.setReturnType(XMLType.XSD_INT);
Integer ret = (Integer) call.invoke(new Object [] { i });
System.out.println("Added " + i + ". Current total: " + ret);
}
}
gives on error:
hugo@jibboom ~/ws-setup% java AddClientMU 2
Exception in thread "main" AxisFault
faultCode: {http://www.w3.org/2003/05/soap-envelope}MustUnderstand
faultSubcode:
faultString: Did not understand "MustUnderstand" header(s):{http://example.com/he
ader}very-important-info
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:Did not understand "MustUnderstand" header(s):{http://example.com/header}very-important-info
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext
.java:1087)
[…]
POST /axis/MathService.jws HTTP/1.0 Content-Type: application/soap+xml; charset=UTF-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.3 Host: 127.0.0.1:8080 Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 616 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <ns1:very-important-info soapenv:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver" soapenv:mustUnderstand="true" xsi:type="xsd:string" xmlns:ns1="http://example.com/header"> blah </ns1:very-important-info> </soapenv:Header> <soapenv:Body> <add soapenv:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <a xsi:type="xsd:int">2</a> </add> </soapenv:Body> </soapenv:Envelope>
HTTP/1.1 500 Internal Server Error Server: Apache-Coyote/1.1 Content-Type: application/soap+xml;charset=UTF-8 Date: Fri, 04 Nov 2005 12:38:56 GMT Connection: close <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <soapenv:NotUnderstood qname="ns1:very-important-info" soapenv:role="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="false" xmlns:ns1="http://example.com/header"/> </soapenv:Header> <soapenv:Body> <soapenv:Fault> <soapenv:Code> <soapenv:Value>soapenv:MustUnderstand</soapenv:Value> </soapenv:Code> <soapenv:Reason> <soapenv:Text xml:lang="en"> Did not understand "MustUnderstand" header(s):{http://example.com/header}very-important-info </soapenv:Text> </soapenv:Reason> <soapenv:Detail> <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">jibboom</ns2:hostname> </soapenv:Detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
<wsa:EndpointReference
xmlns:wsa="http://www.w3.org/2005/04/addressing"
xmlns:fabrikam="http://example.com/fabrikam"
xmlns:wsdli="http://www.w3.org/2005/05/wsdl-instance"
wsdli:wsdlLocation="http://example.com/fabrikam
http://example.com/fabrikam/fabrikam.wsdl">
<wsa:Address>
http://example.com/fabrikam/acct
</wsa:Address>
<wsa:Metadata>
<wsaw:InterfaceName>
fabrikam:Inventory
</wsaw:InterfaceName>
</wsa:Metadata>
<wsa:ReferenceParameters>
<fabrikam:CustomerKey>
412
</fabrikam:CustomerKey>
</wsa:ReferenceParameters>
</wsa:EndpointReference>
wsa:Fromwsa:Towsa:ReplyTowsa:FaultTowsa:MessageIdwsa:RelatesTowsa:Action
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/03/addressing">
<soap:Header>
<wsa:To>
http://example.com/fabrikam/Purchasing
</wsa:To>
<wsa:Action>
http://example.com/fabrikam/SubmitPO
</wsa:Action>
<wsa:MessageID>
http://example.com/6B29FC40-CA47-1067
</wsa:MessageID>
<wsa:RelatesTo
RelationshipType="http://www.w3.org/2005/03/addressing/reply">
http://example.com/fabrikam/mid/1234
</wsa:RelatesTo>
<wsa:ReplyTo>
<wsa:Address>
mailto:client1@example.com
</wsa:Address>
</wsa:ReplyTo>
</soap:Header>
<soap:Body>
…
</soap:Body>
</soap:Envelope>
wsa:Reply-To<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/03/addressing">
<soap:Header>
<wsa:To>
mailto:client1@example.com
</wsa:To>
<wsa:Action>
http://example.com/fabrikam/POAcceptance
</wsa:Action>
<wsa:From>
<wsa:Address>
http://example.com/fabrikam/Purchasing
</wsa:Address>
</wsa:From>
<wsa:MessageID>
mid:123@example.com
</wsa:MessageID>
<wsa:RelatesTo
RelationshipType="http://www.w3.org/2005/03/addressing/reply">
http://example.com/6B29FC40-CA47-1067
</wsa:RelatesTo>
</soap:Header>
<soap:Body>
…
</soap:Body>
</soap:Envelope>
xs:base64Binary in the SOAP envelope<soap:Envelope
xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
xmlns:xmlmime='http://www.w3.org/2004/11/xmlmime'>
<soap:Body>
<m:data xmlns:m='http://example.org/stuff'>
<!-- Two binary components: a photo and a signature -->
<m:photo>/aWKKapGGyQ=</m:photo>
<m:sig>Faa7vROi2VQ=</m:sig>
</m:data>
</soap:Body>
</soap:Envelope>

MIME-Version: 1.0 Content-Type: Multipart/Related;boundary=MIME_boundary; type="application/xop+xml"; start="<mymessage.xml@example.org>"; startinfo="application/soap+xml; action=\"ProcessData\"" Content-Description: SOAP message with my pic and sig in it --MIME_boundary Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml; action=\"ProcessData\"" Content-Transfer-Encoding: 8bit Content-ID: <mymessage.xml@example.org> <soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' xmlns:xmlmime='http://www.w3.org/2004/11/xmlmime'> <soap:Body> <m:data xmlns:m='http://example.org/stuff'> <!-- Two binary components: a photo and a signature --> <m:photo><xop:Include xmlns:xop='http://www.w3.org/2004/08/xop/include' href='cid:http://example.org/me.jpg'/></m:photo> <m:sig><xop:Include xmlns:xop='http://www.w3.org/2004/08/xop/include' href='cid:http://example.org/my.hsh'/></m:sig> </m:data> </soap:Body> </soap:Envelope> --MIME_boundary Content-Type: image/jpeg Content-Transfer-Encoding: binary Content-ID: <http://example.org/me.jpg> // binary octets for JPEG image --MIME_boundary Content-Type: application/pkcs7-signature Content-Transfer-Encoding: binary Content-ID: <http://example.org/my.hsh> // binary octets for signature --MIME_boundary--
<soap:Envelope
xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
xmlns:rep='http://www.w3.org/2004/08/representation'
xmlns:xmlmime='http://www.w3.org/2005/05/xmlmime'>
<soap:Header>
<rep:Representation resource='http://example.org/me.jpg'>
<rep:Data
xmlmime:contentType='image/jpeg'>/aWKKapGGyQ=</rep:Data>
</rep:Representation>
</soap:Header>
<soap:Body>
<x:MyData xmlns:x='http://example.org/mystuff'>
<x:name>John Q. Public</x:name>
<x:img src='http://example.org/me.jpg'/>
</x:MyData>
</soap:Body>
</soap:Envelope>
But:

Description document:
<description targetNamespace="…">
Message formats (schema types):
<types> … </types>
Abstract interface of the service:
<interface>
<operation> … </operation>*
</interface>
Binding of these messages to a protocol:
<binding> … </binding>
Location of the service:
<service>
<endpoint> … </endpoint>*
</service>
</description>

@wsdl:required attribute tells WSDL processor whether
it must be understoodSpecifying that WS-Addressing 1.0 must be used:
<binding name="reservationSOAPBinding"
interface="tns:reservationInterface"
type="http://www.w3.org/2005/08/wsdl/soap12"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">
<wsaw:UsingAddressing wsdl:required="true"
xmlns:wsaw="http://www.w3.org/2005/03/addressing/wsdl"/>
<operation ref="tns:opCheckAvailability"
wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" />
<fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" />
</binding>
<operation> specifies logical message
exchange<operation name="location" wsdlx:safe="true"
pattern="http://www.w3.org/2004/08/wsdl/in-out">
<input element="s:location"
style="http://www.w3.org/2005/05/wsdl/style/uri-style"/>
<output element="s:temperature"/>
</operation>
<operation name="location" wsdlx:safe="true"
pattern="http://www.w3.org/2005/05/wsdl/in-out">
<input element="s:location"
style="http://www.w3.org/2005/05/wsdl/style/uri-style"/>
<output element="s:temperature"/>
</operation>
<binding name="SoapBinding" interface="m:CompleteInterface" type="http://www.w3.org/2005/05/wsdl/soap" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"/> <!-- Use of MTOM --> <wsoap:module uri="http://www.w3.org/2004/08/soap/features/http-optimization"/> <operation ref="m:location"/> <operation ref="m:set"> <input messageLabel="In"> <!-- Required use of a security extension --> <wsoap:module required="true" uri="http://accurateweather.example/mySecurityExtension"/> </input> <output messageLabel="Out"/> </operation> </binding>
Only WSDL 1.1 is supported by Axis 1.3:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://localhost:8080/axis/services/MathServiceDL"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://localhost:8080/axis/services/MathServiceDL"
xmlns:intf="http://localhost:8080/axis/services/MathServiceDL"
xmlns:tns1="http://doclit"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="http://doclit" xmlns="http://www.w3.org/2001/XMLSchema">
<element name="add">
<complexType>
<sequence>
<element name="in0" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="addResponse">
<complexType>
<sequence>
<element name="addReturn" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="total">
<complexType/>
</element>
<element name="totalResponse">
<complexType>
<sequence>
<element name="totalReturn" type="xsd:int"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="totalResponse">
<wsdl:part element="tns1:totalResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="totalRequest">
<wsdl:part element="tns1:total" name="parameters"/>
</wsdl:message>
<wsdl:message name="addResponse">
<wsdl:part element="tns1:addResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="addRequest">
<wsdl:part element="tns1:add" name="parameters"/>
</wsdl:message>
<wsdl:portType name="MathServiceDL">
<wsdl:operation name="add">
<wsdl:input message="impl:addRequest" name="addRequest"/>
<wsdl:output message="impl:addResponse" name="addResponse"/>
</wsdl:operation>
<wsdl:operation name="total">
<wsdl:input message="impl:totalRequest" name="totalRequest"/>
<wsdl:output message="impl:totalResponse" name="totalResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MathServiceDLSoapBinding" type="impl:MathServiceDL">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="add">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="addRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="addResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="total">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="totalRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="totalResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MathServiceDLService">
<wsdl:port binding="impl:MathServiceDLSoapBinding" name="MathServiceDL">
<wsdlsoap:address location="http://localhost:8080/axis/services/MathServiceDL"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
<?xml version="1.0" encoding="UTF-8"?>
<description
targetNamespace="http://localhost:8080/axis/services/MathServiceDL"
xmlns:tns="http://localhost:8080/axis/services/MathServiceDL"
xmlns:sns="http://doclit"
xmlns="http://www.w3.org/2005/08/wsdl"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsoap="http://www.w3.org/2005/08/wsdl/soap"
xmlns:whttp="http://www.w3.org/2005/08/wsdl/http"
xmlns:wsdlx= "http://www.w3.org/2005/08/wsdl-extensions">
<types>
<xsd:schema targetNamespace="http://doclit">
<xsd:element name="total"/>
<xsd:element name="totalResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="totalReturn" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="add">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="a" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="addReturn" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<interface name="MathService">
<operation name="add" pattern="http://www.w3.org/2005/08/wsdl/in-out"
style="http://www.w3.org/2005/08/wsdl/rpc">
<input element="sns:add"/>
<output element="sns:addResponse"/>
</operation>
<operation name="total" pattern="http://www.w3.org/2005/08/wsdl/in-out"
wsdlx:safe="true">
<input element="sns:total"/>
<output element="sns:totalResponse"/>
</operation>
</interface>
<binding name="MathServiceSoapBinding"
type="http://www.w3.org/2005/08/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">
<operation ref="add" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response/"/>
<operation ref="total" whttp:location="?method=total"
wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response/"/>
</binding>
<service name="MathServiceService"
interface="tns:MathService">
<endpoint binding="tns:MathServiceSoapBinding" name="MathEndpoint"
address="http://localhost:8080/axis/services/MathServiceDL"/>
</service>
</description>
hugo@jibboom ~/ws-setup% java org.apache.axis.wsdl.WSDL2Java \ http://localhost:8080/axis/services/MathServiceDL\?WSDL hugo@jibboom ~/ws-setup% ls localhost/axis/services/MathServiceDL MathServiceDL.class MathServiceDLServiceLocator.class MathServiceDL.java MathServiceDLServiceLocator.java MathServiceDLService.class MathServiceDLSoapBindingStub.class MathServiceDLService.java MathServiceDLSoapBindingStub.java
import localhost.axis.services.MathServiceDL.*; public class WSDLMathClientDL { public static void main(String[] args) { Integer i = new Integer(args[0]); try { MathServiceDLService service = new MathServiceDLServiceLocator(); MathServiceDL endpoint = service.getMathServiceDL(); int ret = endpoint.add(i); System.out.println("Added " + i + ". Current total: " + ret); } catch (Exception e) { System.err.println("Exception caught: " + e); } } }
whttp:location="http://ws.foo.example/{country}/{city}"
can be serialized as:
http://ws.foo.example/Sweden/V%C3%A4xj%C3%B6
Presentation by Charlton Barreto, Adobe Systems Inc.
<env:Envelope>
<env:Header>
<i18n:international>
<i18n:locale>en-US</i18n:locale>
<i18n:preferences>
<ldml:collation>
<ldml:alias source="de_DE" type="phonebook"/>
</ldml:collation>
</i18n:preferences>
</i18n:international>
…
</env:Header>
<env:Body>
…
</env:Body>
</env:Envelope>
<operation
name="OperationAddr"
pattern="http://www.w3.org/2003/11/wsdl/in-out"
p3patt:p3p="http://example.com/p3p-pol1.xml">
<input message="mytypes:addrUpdate"/>
<output message="mytypes:updateResp"/>
</operation>