HomeDigital EditionSys-Con RadioSearch Web Services Cd
B2B Beginning WS Business Process Management Case Studies Content Management Distributing Computing e-Business Electronic Data Interchange Enterprise Industry Insight Integration Interviews Java & Web Services .NET Portal Product Reviews Scalability & Performance Security SOAP Source Code UDDI Wireless WS Standards WS Tips & Techniques WSDL WS Editorials XML

Tools for Taming Web Services Management by Dr. Matthew Fuchs
WSJ Vol 04 Issue 01 - pg.22



Listing 1

POST /TradeSecurity.jws HTTP/1.1
Host: demo.westbridgetech.com
Connection: close
Accept: */*
Content-Length: 1255
Content-Type: text/xml; charset=utf-8
SOAPAction: ""

<SOAP-ENV:Envelope xmlns:SOAP-ENC=
"http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:impl="http://example.com/TradeSecurity.jws-impl"
   xmlns:intf="http://example.com/TradeSecurity.jws"
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
   xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Header>
        <wsu:Timestamp
		xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
            <wsu:Created>2003-10-31T18:46:56Z</wsu:Created>
            <wsu:Expires>2003-10-31T18:47:06Z</wsu:Expires>
        </wsu:Timestamp>
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"
	SOAP-ENV:actor="http://tempuri.org/" SOAP-ENV:mustUnderstand="1">
	...
        </wsse:Security>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
   <m:BuySecurity xmlns:m="http://example.com/TradeSecurity.jws"
   SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/">
            <tickerSymbol xsi:type="xsd:string">XXX</tickerSymbol>
            <amount xsi:type="xsd:string">1212</amount>
        </m:BuySecurity>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Listing  2a

<definition name="Support" targetNamespace="http://example.com/InternalSupport"
	xmlns:tns="http://example.com/InternalSupport"
	xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns="http://schemas.xmlsoap.org/wsdl/"
	xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
   <message name="SubmitIssueInput">
      <part name="contact" type="xsd:string"/>
      <part name="component" type="xsd:integer"/>
      <part name="description" type="xsd:string"/>
   </message>
   ...
   <portType name="Support">
      <operation name="SubmitIssue">
         <input message="tns:SubmitIssueInput"/>
	  ...
      </operation>
      <operation name="ListOpenIssues">
	...
	</operation>
	<operation name="AssignIssue">
	...
	</operation>
   </portType>
   <binding name="SupportBinding" type="tns:Support">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="SubmitIssue">
         <soap:operation soapAction="submit"/>
	  <input>
	     <soap:body use="encoded" namespace="http://example.com/Support" 
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
          </input>
			...
      </operation>
                ...
   </binding>
   <service name="SupportService">
      <port name="Support" binding="tns:SupportBinding">
         <soap:address location="http://internalserver/Support"/>
      </port>
   </service>
</definition>

Listing  2b

<definition name="Support" targetNamespace="http://example.com/PurchaseOrders"
   xmlns:tns="http://example.com/PurchaseOrder"
   xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns="http://schemas.xmlsoap.org/wsdl/">
   <types>
      <schema targetNamespace="urn:purchaseProcessing">
         <element name="PurchaseOrder"/>
      </schema>
   </types>
   <message name="PurchaseOrderInput">
      <part name="body" element="po:PurchaseOrder"/>
   </message>
   <portType name="OrderProcessing">
      <operation name="SendPurchaseOrder">
         <input message="tns:PurchaseOrderInput"/>
      </operation>
      <operation name="ChangeOrder">
         ...
      </operation>
      <operation name="CancelOrder">
         ...
      </operation>
   </portType>
   <binding name="POBinding" type="tns:OrderProcessing">
      <soap:binding style="document"
	  transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="SendPurchaseOrder">
         <soap:operation soapAction="send"/>
         <input>
            <soap:body parts="body" use="literal"/>
         </input>
         ...
      </operation>
      ...
   </binding>
   <service name="OrderProcessing">
      <port name="PurchasePort" binding="tns:POBinding">
         <soap:address location="http://internalserver/PurchaseOrders"/>
      </port>
   </service>
</definition>

Listing  3a

<definition name="Combined" targetNamespace=
"http://example.com/CustomerSupport"
	xmlns:tns="http://example.com/PurchaseOrder"
	xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns="http://schemas.xmlsoap.org/wsdl">
   <types>
      <schema targetNamespace="urn:purchaseProcessing">
         <element name="PurchaseOrder"/>
      </schema>
    <schema targetNamespace="http://example.com/identity">
         <element name="username" type="xsd:string"/>
         <element name="password" type="xsd:string"/>
      </schema>
   </types>
   <message name="PurchaseOrderInput" xmlns:id="http://example.com/identity">
      <part name="username" element="id:username"/>
      <part name="password" element="id:password"/>
      <part name="body" element="po:PurchaseOrder"/>
   </message>
   <message name="SubmitIssueInput">
      <part name="username" type="xsd:string"/>
      <part name="password" type="xsd:string"/>
      <part name="contact" type="xsd:string"/>
      <part name="component" type="xsd:integer"/>
      <part name="description" type="xsd:string"/>
   </message>
   <portType name="Combo">
      <operation name="SendPurchaseOrder">
         <input message="tns:PurchaseOrderInput"/>
         ...
      </operation>
      <operation name="SubmitIssue">
         <input message="tns:SubmitIssueInput"/>
         ...
      </operation>
   </portType>
   <binding name="binding" type="tns:Combo">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="SendPurchaseOrder">
         <soap:operation style="document" soapAction="send"/>
            <input>
               <soap:body use="literal"/>
            </input>
            ...
      </operation>
      <operation name="SubmitIssue">
         <soap:operation style="rpc" soapAction="submit"/>
         <input>
   <soap:body use="encoded" namespace="http://example.com/Support"
   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
         </input>
      </operation>
   </binding>
   <service name="AcmeSpecialService">
      <port name="AcmePort" binding="tns:Combo">
         <soap:address location="https://example.com/AcmeServices"/>
      </port>
   </service>
</definition>

Listing  3b:

<definition name="Combined" targetNamespace="http://example.com/ZenithServices"
xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"
xmlns:tns="http://example.com/PurchaseOrder"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
   <types>
      <xsd:schema targetNamespace="urn:purchaseProcessing">
         <xsd:element name="PurchaseOrder"/>
      </xsd:schema>
      <xsd:schema targetNamespace="http://example.com/PurchaseOrders">
         <xsd:import namespace="http://schemas.xmlsoap.org/ws/2002/04/secext"/>
         <xsd:import namespace="http://ws-i.org/schemas/conformanceClaim"/>
      </xsd:schema>
      <xsd:schema targetNamespace="http://example.com/Support">
         <xsd:element name="SubmitIssue">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element name="contact" type="xsd:string"/>
                  <xsd:element name="component" type="xsd:integer"/>
                  <xsd:element name="description" type="xsd:string"/>
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
      </xsd:schema>
   </types>
   <message name="PurchaseOrderInput">
      <part name="body" element="po:PurchaseOrder"/>
   </message>
   <message name="SubmitIssueInput">
      <part name="body" element="sup:SubmitIssue"/>
   </message>
   <message name="ws-security">
      <part name="header" element="wsse:Security"/>
   </message>
   <message name="wsi-basic">
      <part name="header" element="wsi:Claim"/>
   </message>
   <portType name="Combo">
      <operation name="SendPurchaseOrder"></operation>
      <operation name="SubmitIssue"> ... </operation>
      <operation name="ListOpenIssues"> ... </operation>
      <operation name="ChangeOrder"> ... </operation>
   </portType>
   <binding name="binding" type="tns:Combo">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="SendPurchaseOrder">
         <soap:operation style="document" soapAction="send"/>
         <input>
            <soap:body parts="body" use="literal"/>
            <soap:header message="tns:ws-security" part="header"/>
            <soap:header message="tns:wsi-basic" part="header"/>
         </input>
         ...
      </operation>
      <operation name="SubmitIssue">
         <soap:operation style="document" soapAction="submit"/>
         <input>
            <soap:body use="literal" namespace="http://example.com/Support"/>
         </input>
         ...
      </operation>
      ...
   </binding>
   <service name="ZenithSpecialServices">
      <port name="ZenithPort" binding="tns:Combo">
         <documentation>
            <wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.0"/>
         </documentation>
         <soap:address location="https://example.com/ZenithWebServices"/>
      </port>
   </service>
</definition>