HelloWorld WSDL Contract - 8.0

Talend ESB Service Developer Guide

Version
8.0
Language
English
Product
Talend Data Fabric
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Module
Talend ESB
Talend Runtime
Content
Design and Development
Installation and Upgrade
Last publication date
2023-11-06

The below shows the HelloWorld WSDL contract. This contract defines a single port type, Greeter, with a SOAP binding, Greeter_SOAPBinding, and a service, SOAPService, which has a single port, SoapPort.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloWorld" 
   targetNamespace="http://apache.org/hello_world_soap_http" 
   xmlns="http://schemas.xmlsoap.org/wsdl/" 
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
   xmlns:tns="http://apache.org/hello_world_soap_http"
   xmlns:x1="http://apache.org/hello_world_soap_http/types"
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <wsdl:types>
      <schema targetNamespace=
         "http://apache.org/hello_world_soap_http/types" 
         xmlns="http://www.w3.org/2001/XMLSchema"
         xmlns:tns="http://apache.org/hello_world_soap_http/types"
            elementFormDefault="qualified">
         <simpleType name="MyStringType">
            <restriction base="string">
               <maxLength value="30" />
            </restriction>
         </simpleType>
         <element name="sayHi">
            <complexType/>
         </element>
         <element name="sayHiResponse">
            <complexType>
               <sequence>
                  <element name="responseType" type="string"/>
               </sequence>
            </complexType>
         </element>
         <element name="greetMe">
            <complexType>
               <sequence>
                  <element name="requestType" type="tns:MyStringType"/>
               </sequence>
            </complexType>
         </element>
         <element name="greetMeResponse">
            <complexType>
               <sequence>
                  <element name="responseType" type="string"/>
               </sequence>
            </complexType>
         </element>
         <element name="greetMeOneWay">
            <complexType>
               <sequence>
                  <element name="requestType" type="string"/>
               </sequence>
            </complexType>
         </element>
         <element name="pingMe">
            <complexType/>
         </element>
         <element name="pingMeResponse">
            <complexType/>
         </element>
         <element name="faultDetail">
            <complexType>
               <sequence>
                  <element name="minor" type="short"/>
                  <element name="major" type="short"/>
               </sequence>
            </complexType>
         </element>
      </schema>
   </wsdl:types>
<wsdl:message name="sayHiRequest">
      <wsdl:part element="x1:sayHi" name="in"/>
   </wsdl:message>
   <wsdl:message name="sayHiResponse">
      <wsdl:part element="x1:sayHiResponse" name="out"/>
   </wsdl:message>
   <wsdl:message name="greetMeRequest">
      <wsdl:part element="x1:greetMe" name="in"/>
   </wsdl:message>
   <wsdl:message name="greetMeResponse">
      <wsdl:part element="x1:greetMeResponse" name="out"/>
   </wsdl:message>
   <wsdl:message name="greetMeOneWayRequest">
      <wsdl:part element="x1:greetMeOneWay" name="in"/>
   </wsdl:message>
   <wsdl:message name="pingMeRequest">
      <wsdl:part name="in" element="x1:pingMe"/>
   </wsdl:message>
   <wsdl:message name="pingMeResponse">
      <wsdl:part name="out" element="x1:pingMeResponse"/>
   </wsdl:message>       
   <wsdl:message name="pingMeFault">
      <wsdl:part name="faultDetail" element="x1:faultDetail"/>
   </wsdl:message>  
   <wsdl:portType name="Greeter">
      <wsdl:operation name="sayHi">
         <wsdl:input message="tns:sayHiRequest" name="sayHiRequest"/>
         <wsdl:output message="tns:sayHiResponse" name="sayHiResponse"/>
      </wsdl:operation>
         
      <wsdl:operation name="greetMe">
         <wsdl:input message="tns:greetMeRequest" 
            name="greetMeRequest"/>
         <wsdl:output message="tns:greetMeResponse" 
            name="greetMeResponse"/>
      </wsdl:operation>
         
      <wsdl:operation name="greetMeOneWay">
         <wsdl:input message="tns:greetMeOneWayRequest" 
            name="greetMeOneWayRequest"/>
      </wsdl:operation>

      <wsdl:operation name="pingMe">
         <wsdl:input name="pingMeRequest" message="tns:pingMeRequest"/>
         <wsdl:output name="pingMeResponse" message="tns:pingMeResponse"/>
         <wsdl:fault name="pingMeFault" message="tns:pingMeFault"/>
      </wsdl:operation> 
   </wsdl:portType>
<wsdl:binding name="Greeter_SOAPBinding" type="tns:Greeter">
      <soap:binding style="document" 
         transport="http://schemas.xmlsoap.org/soap/http"/>
        
      <wsdl:operation name="sayHi">
         <soap:operation soapAction="" style="document"/>
         <wsdl:input name="sayHiRequest">
            <soap:body use="literal"/>
         </wsdl:input>
         <wsdl:output name="sayHiResponse">
            <soap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
        
      <wsdl:operation name="greetMe">
         <soap:operation soapAction="" style="document"/>
         <wsdl:input name="greetMeRequest">
            <soap:body use="literal"/>
         </wsdl:input>
         <wsdl:output name="greetMeResponse">
            <soap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
        
      <wsdl:operation name="greetMeOneWay">
         <soap:operation soapAction="" style="document"/>
         <wsdl:input name="greetMeOneWayRequest">
            <soap:body use="literal"/>
         </wsdl:input>
      </wsdl:operation>

      <wsdl:operation name="pingMe">
         <soap:operation style="document"/>
         <wsdl:input>
            <soap:body use="literal"/>
         </wsdl:input>
         <wsdl:output>
            <soap:body use="literal"/>
         </wsdl:output>
         <wsdl:fault name="pingMeFault">
            <soap:fault name="pingMeFault" use="literal"/>
         </wsdl:fault>
      </wsdl:operation>
        
   </wsdl:binding>

   <wsdl:service name="SOAPService">
      <wsdl:port binding="tns:Greeter_SOAPBinding" name="SoapPort">
         <soap:address 
            location="http://localhost:9000/SoapContext/SoapPort"/>
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>

The Greeter port type from the example above defines the following WSDL operations:

  • sayHi - has a single output parameter, of xsd:string .

  • greetMe - has an input parameter, of xsd:string , and an output parameter, of xsd:string .

  • greetMeOneWay - has a single input parameter, of xsd:string . Because this operation has no output parameters, CXF can optimize this call to be a oneway invocation (that is, the client does not wait for a response from the server).

  • pingMe - has no input parameters and no output parameters, but it can raise a fault exception.

The above example also defines a binding, Greeter_SOAPBinding , for the SOAP protocol. In practice, the binding is normally generated automatically - for example, by running either of the CXF wsdl2soap or wsdl2xml utilities. Likewise, the SOAPService service can be generated automatically by running the CXF wsdl2service utility.