WSDL Basics


What and Why WSDL

WSDL is a descriptor for Web Service that is XML formatted. Like any J2EE descriptors, it basically describes the Web Service. Web Service is described as a set of endpoints (ports) which would have 2 parts – Abstract definition and Concrete binding (Will dive onto that later).

whatiswsdl

The WSDL is basically the contract between the client and implementation. Everything that are defined and exposed has a definition inside the WSDL file.

Why WSDL? – Enables automation of communication details between communicating partners. Machines can read XML/WSDL documents and able to invoke the defined service in WSDL. 3rd part can also verify if the communication conforms to WSDL standards.

WSDL Document Structure

 

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl"                   targetNamespace="your name space here"                   xmlns:tns="your name space here"                   xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap">

    <wsdl:types>
        <xs:schema targetNamespace="your namespace here" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

        </xs:schema>
    </wsdl:types>
    <wsdl:message name="some operation input">
           <!--Parts here-->
    </wsdl:message>

    <wsdl:message name ="some operation output">
        <!--Parts here-->
    </wsdl:message>

    <wsdl:portType name="your type name">
        <!-- Define operations here-->
    </wsdl:portType>

    <wsdl:binding name="your binding name" type="tns:port type name above">
        <!-- define style of transport here-->
    </wsdl:binding>

    <wsdl:service>
    </wsdl:service>

</wsdl:definitions>

On the sample above, the XML file uses the wsdl namespace as highlighted.

Example of WSDL document

The WSDL service above has a simple service generating strings and returning them. It will have a single operation called getSystemMessageAndReturn. It will be deployed using SOAP 1.1 over HTTP. The service takes a “string” message and responds with a message that has the “string” in it.

Nothing is much more simpler than that.

7 Elements of WSDL:

  • Types – data type definition and used to describe exchanged messages.
  • Message – abstract, typed definitions of data being exchanged
  • Operation – abstract description of an action. Refers to an input and/or output messages.
  • Port Type – Collection of operations
  • Binding – Concrete protocol and data format (encoding) for a particular Port type.
  • Port  – Defines a single communication endpoint. Endpoint address for binding. URL for HTTP, email address for SMTP.
  • Service -Aggregate set of related ports.

WSDL View of a Web Service

wsdl_doc.jpg

Web Service Invocation

wsdl_invoc

Message Element

A message element can consist of one or more logical parts. It is basically the data unit of an WSDL definition.

<definitions ....>
   <message name="nmtoken">
      <part name="nmtoken" element="qname"? type="qname" ?/>
   </message>
</definitions>

Types of Operations

There are 2 types of operations that we can define on our WSDL. One way or Two way.

One-way

The endpoint receives a message only.

<operation name="submitPurchase">
   <input message="purchase"/>
</operation>

Request/Response

The endpoint receives a message and sends a correlated message.

<operation name="submitPurchase">
   <input message="purchase"/>
   <output message="confirmation"/>
</operation>
<operation name="submitPurchase">
   <input message="purchase"/>
   <output message="confirmation"/>
   <fault message="faultMessage"/>
</operation>

Importing and Authoring Style

  • When a developer creates a web service, it is important to consider reusability and maintainability.
  • It is important also to maintain a WSDL document in 3 separate parts.
    • Data Type definitions
    • Abstract definitions
    • Specific Service Bindings
  • Use import element to import necessary part of WSDL document. This makes the parts more isolated and thus, maintainable.=

Examples

You can download some WSDL examples here.

On the next blog post, we’ll be creating a Web Service from scratch and apply all what we learned from here. See you!

One thought on “WSDL Basics

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s