SlideShare a Scribd company logo
Topic 3

    WSDL and WADL and UDDI



Assoc.Prof. Dr. Thanachart Numnonda
       www.imcinstitute.com
            August 2010
Agenda

   What is and Why WSDL?
   WSDL Elements
   WSDL Transmission Patterns
   WADL Basics and Elements
   UDDI Basics and Data Types


                                 2
What is and why WSDL?




                        3
What is WSDL?
• XML language for describing web services
• Web service is described as
   – A set of communication endpoints (ports)
• Endpoint is made of two parts
   – Abstract definitions of operations and messages
   – Concrete binding to networking protocol (and corresponding
     endpoint address) and message encoding
• Why this separation?
   – Enhance reusability (of the abstract part, for example)

                                                               4
WSDL Service Description
• WSDL is “the interface for Web Services” describing:
• What a service does - the operations (methods) the
  service provides, and the data (arguments and returns)
  needed to invoke them.
• How a service is accessed - details about data formats
  and protocols necessary to access the service
  operations.
• Where a service is located - details of the protocol-
  specific network address, such as a URL.
                                                       5
Where is WSDL Used?
Web service                                               Web service
   W
 requester                                                 provider
                                 (4) Invoke web
      e                               service
                                                        Servlets       JAXR
      b
Business partner
 or other system
                                 soap request

                                                               WSDL
                                                              Document


                                (3) Retrieve WSDL
                                     definition

                                 Soap request


           (2) Search for web
                 service
                                                    (1) Register web
                                 UDDI                    service
             Soap request
                                  UDDI
                                service              Soap request
                                 Registry


                                                                              6
Why WSDL?




       source: WSDL 1.2 primer   7
Why WSDL? (cont.)
• Enables automation of communication details
  between communicating partners
  – Machines can read WSDL
  – Machines can invoke a service defined in WSDL
• Discoverable through registry
• Arbitration
  – 3rd party can verify if communication conforms to
    WSDL
                                                        8
WSDL Document Structure
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl"
            targetNamespace="your namespace here"
            xmlns:tns="your namespace here"
            xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap">
    <wsdl:types>
        <xs:schema targetNamespace="your namespace here (could be another) "
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            <!-- Define types and possibly elements here -->
        </schema>
    </wsdl:types>
    <wsdl:message name="some operation input">
        <!-- part(s) here -->
    </wsdl:message>
    <wsdl:message name="some operation output">
        <!-- part(s) here -->
    </wsdl:message>
    <wsdl:portType name="your type name">
        <!-- define operations here in terms of their messages -->
    </wsdl:portType>
    <wsdl:binding name="your binding name" type="tns:port type name above">
        <!-- define style and transport in general and use per operation -->
    </wsdl:binding>
    <wsdl:service>
        <!-- define a port using the above binding and a URL -->
    </wsdl:service>
</wsdl:definitions>
                                                                               9
WSDL Elements




                10
WSDL Structure
   Abstract part
       –   Types
       –   Message
       –   Operation
       –   Port Type
   Concrete part
       –   Binding
       –   Port
       –   Service               11
WSDL Structure - Abstract
   port type - logical collection of
    related operations
   operation - abstract description
    of an action supported by the
    service
   message - data exchanged in a
    single logical transmission
   types - data structures that will
    be exchanged as parts of
    messages
                                        12
WSDL Structure - Concrete
   interface bindings - message
    encoding and protocol binding
    for all operations and messages
    defined in a given porttype
   ports - combine the interface
    binding information with a
    network address specified by a
    URI
   services - are logical groupings
    of ports
                                       13
WSDL Information Model




                         14
WSDL : Example




                 15
WSDL : Example (cont.)




                         16
WSDL Elements : Definitions
   name attribute - corresponds to the name of the
    web service. It is only for documentation and is
    optional
   targetNamespace attribute - a URI for the entire
    WSDL file
   default namespace - all elements without a
    namespace prefix, such as message or portType,
    are assumed to be part of the default WSDL
    namespace: http://schemas.xmlsoap.org/wsdl/
   other XML namespace declarations                   17
WSDL Elements : Type
   Data type definitions
   Used to describe exchanged messages
   Uses W3C XML Schema as canonical type system




                                                   18
WSDL Example: Types
<definitions name="StockQuote"
   targetNamespace="http://example.com/stockquote.wsdl"
              xmlns:tns="http://example.com/stockquote.wsdl"
              xmlns:xsd1="http://example.com/stockquote.xsd"
              xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
              xmlns="http://schemas.xmlsoap.org/wsdl/”>
   <types>
       <schema targetNamespace="http://example.com/stockquote.xsd"
               xmlns="http://www.w3.org/2000/10/XMLSchema">
            <element name="TradePriceRequest">
               <complexType>
                   <all>
                       <element name=”tickerSymbol" type="string"/>
                   </all>
               </complexType>
            </element>
            <element name="TradePrice">
               <complexType>
                   <all>
                       <element name="price" type="float"/>
                   </all>
               </complexType>
            </element>
       </schema>
   </types>
                                                                      19
WSDL Elements : Message
   A message describes the abstract form of an input,
    output or a fault message.
   A message describes the data being communicated.
   Each message has a unique name within the WSDL
    document and contains a collection of parts.
   A message may have several parts.
   A part may belong to several messages.


                                                     20
WSDL Elements : Part
   Parts provide a flexible mechanism for describing
    the logical content of messages.
   A part element has two properties:
       –   name : represented by the name attribute,
           which must be unique among all the part
           elements of the message element
       –   kind : defined as either a type or an element
           attribute:
             •   element - the payload of the message on the
                 wire is precisely the XML element
             •   type - any element conforming to the type 21
WSDL Elements : PortType
   portType is a collection of one or more related operations
    describing the interface of a web service.
   portType definition is a collection of operation elements.
   Generally, WSDL documents contain only one portType
    element, because different web service interface
    definitions are written with different documents.
   portType has a single name attribute.
   The name of portType together with the namespace of the
    WSDL document define a unique name for the portType.

                                                                 22
WSDL Elements : Operation
   operation defines a method of a web service, including the
    name of the method, input parameters, and the output or
    return type of the method.
   All operations in a portType must have different names.
   Each operation may define:
       –    input message
       –    output message
       –    fault message
   An operation in WSDL is the equivalent of a method
    signature in Java.
                                                              23
Abstract Elements : Example

<message name="GetLastTradePriceInput">
    <part name="body" element="xsd1:TradePriceRequest"/>
</message>

<message name="GetLastTradePriceOutput">
    <part name="body" element="xsd1:TradePrice"/>
</message>

<portType name="StockQuotePortType">
    <operation name="GetLastTradePrice">
       <input message="tns:GetLastTradePriceInput"/>
       <output message="tns:GetLastTradePriceOutput"/>
    </operation>
    <!-- More operations -->
</portType>
                                                         24
WSDL Elements : Binding
   The binding element specifies how to format messages in a
    protocol specific manner:
       –   message encoding
       –   protocol binding
   Each portType can have several binding elements
    associated with it.
   Each binding specifies how to invoke operations using
    particular transport protocols. For instance: SOAP over
    HTTP, SOAP over SMTP, etc.

                                                              25
WSDL Elements : Binding (cont.)
   The binding element has two attributes:
       –   name : must be unique among all binding elements
           defined in the WSDL document
       –   type : identifies which portType the binding
           describes




                                                          26
WSDL Elements : Binding (cont.)
   Defines protocol details and message format for
    operations and messages defined by a particular
    portType
   Specify one protocol out of
      SOAP (SOAP over    HTTP, SOAP over SMTP)
      HTTP GET/POST

   Provides extensibility mechanism
      Can includes binding extensibility elements
      Binding extensibility elements are used to specify the
       concrete grammar
                                                                27
RPC and Document-style
       RPC             Document-style

   Procedure call        Business documents
   Method signature      Schema
   Marshaling            Parsing & Validating
   Tightly-coupled       Loosely coupled
   Point to point        End to end
   Synchronous           Asynchronous
   Typically within      Typically over
    Intranet               internet


                                                  28
RPC and Document-style (cont.)
         RPC            Document-style
   Within Enterprise      Between enterprise
                            and enterprise
   Simple, point-to-      Complex, end to end
    point                   with intermediaries
   Short running          Long running
    business process        business process
   Reliable and high      Unpredictable
    bandwidth               bandwidth
   Trusted                Blind trust
    environment

                                                  29
Binding Protocol Encoding Rules
   The binding also specifies the encoding rules used in
    serializing parts of a message into XML:
       –    literal encoding: takes the WSDL types defined in
            XML Schemaand “literally” uses those definitions to
            represent the XML content of messages. Abstract
            WSDL types becomes concrete types
       –    SOAP encoding : considers the XML Schema
            definitions as abstract entities and translates them into
            XML using SOAP encoding rules
   Literal encoding is used for document style interactions.
   SOAP encoding is used for RPC style interactions.                   30
WSDL Elements : Port
   Port specifies the network address of the end-point
    hosting the web service.
   port is a single end-point defined as a combination of a
    binding and a network address.
   There can be many ports for a binding, just like many
    implementations for the same interface.
   The soap:address element is used to give a port an
    address.

                                                           31
WSDL Elements : Service
   A service is a collection of ports.
   Although a WSDL document can contain a collection
    of service elements, by convention a WSDL document
    contains a single service.
   Usage: group the ports that are related to the same
    service interface (portType) but expressed by different
    protocols (binding).



                                                          32
Concrete Elements : Example
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
   <soap:binding style="document"
         transport="http://schemas.xmlsoap.org/soap/http"/>
   <operation name="GetLastTradePrice">
      <soap:operation
            soapAction="http://example.com/GetLastTradePrice"/>
        <input> <soap:body use="literal" />
        </input>
        <output> <soap:body use="literal" />
        </output>
   </operation>
</binding>

<service name="StockQuoteService">
   <documentation>My first service</documentation>
   <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
       <soap:address location="http://example.com/stockquote"/>
   </port>
</service>

                                                                       33
WSDL Transmission Patterns




                             34
Transmission Patterns in WSDL
   One-way
      The   endpoint receives a message
   Request/response
      The endpoint receives a message, and sends a correlated
       message
   Notification
      The   endpoint sends a message
   Solicit/response
      The endpoint sends a message, and receives a correlated
       message
                                                                 35
Transmission Patterns in WSDL




                                36
One-way Operation : Example
<operation name=”submitPurchase”>
   <input message=”purchase”/>
</operation>




                                    37
Request/Response Operation : Example
 <operation name=”submitPurchase”>
    <input message=”purchase”/>
    <output message=”confirmation”/>
 </operation>

 <operation name=”submitPurchase”>
    <input message=”purchase”/>
    <output message=”confirmation”/>
    <fault message=”faultMessage”/>
 </operation>
                                       38
Notification Operation : Example
<operation name=”deliveryStatus”>
   <output message=”trackingInformation”/>
</operation>




                                             39
Solicit/Response Operation : Example
 <operation name=”clientQuery”>
    <output message=”bandwidthRequest”/>
    <input message=”bandwidthInfo”/>
    <fault message=”faultMessage”/>
 </operation>




                                           40
WADL Basic and Elements




                          41
WADL

   Web Application Description Language
   An XML-based file format
   A machine-readable description of HTTP-
    based REST web Services
   Development language+platform neutral




                                              42
WADL Elements
•   Grammars
     −   Currently specify use of W3C XML Schema or RelaxNG
•   Resources
     –   Identified by a URI template
     –   Specify which methods are supported
•   Method
     –   Specify details of request and response contents
     –   Often refer to representations
•   Representation
     –   Describe the format of a HTTP entity
     –   Can refer to grammars
                                                              43
WADL Document Structure
<application>
  <doc/>*
  <grammars/>?
  <resources base='anyURI'>?
    <doc/>*
    <resource path='template' type='anyURI+'?>+
      <doc/>*
      <param/>*
      ( <method/> | <resource/> )+
    </resource>
  </resources>
  ( <method/> | <representation/> | <fault/> |
    <resource_type/>)*
</application>
                          * => 0 or more
                          ? => 0 or 1
                          + => 1 or more
                                                  44
WADL Method Structure
<method name='NMTOKEN'? id='ID'? href='anyURI'?>
  <doc/>*
  <request>?
    <param>*
    <representation/>*
  </request>
  <response>?
    ( <representation/> | <fault/> )*
  </response>
</method>




                                                   45
Yahoo News Search
•   http://api.search.yahoo.com/NewsSearchService/
    V1/newsSearch
•   Query parameters
     –   appid: get this from Yahoo by registering
     –   query: space separated list of keywords
     –   many others including language, sort, result count
         etc.
•   Get back results as XML, JSON or PHP
     –   XML schema available for normal and error
         responses
                                                              46
Yahoo News Search in WADL
<application xmlns:...>

  <grammars>
    <include href=".../NewsSearchResponse.xsd"/>
    <include href=".../NewsSearchError.xsd"/>
  </grammars>

  <resources
base="http://api.search.yahoo.com/NewsSearchService/V1/">
    <resource path="newsSearch">
      <param name="appid" type="xsd:string"
        required="true" style="query"/>
      <method href="#search"/>
    </resource>
  </resources>


                                                      47
Yahoo News Search in WADL (cont.)
 <method name="GET" id="search">
   <request>
     <param name="query" type="xsd:string"
         required="true" style="query"/>
     <param name="type" type="xsd:string"
         default="all" style="query">
       <option value="all"/>
       <option value="any"/>
       <option value="phrase"/>
     </param>
     ...
   </request>
   <response>
     <representation href="#resultSet"/>
     <fault href="#searchError"/>
   </response>
 </method>
                                             48
Yahoo News Search in WADL (cont.)
 <representation id="resultSet"
     mediaType="application/xml"
     element="yn:ResultSet">
   <doc xml:lang="en"
     title="A matching list of news items"/>
 </representation>

 <fault id="searchError"
   status="400"
   mediaType="application/xml"
   element="ya:Error"/>




                                               49
wadl2java
•   Open source project
     –   http://wadl.dev.java.net
•   Generates client-side stubs
•   Command line or Apache Ant task
     −   java -jar wadl2java.jar
•   Uses JAXB for XML processing
•   file.wadl



                                      50
Yahoo News Search Stub
public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
    String appid, String query) {...}
  public DataSource getAsApplicationXml(
    String appid, String query) {...}
  public DataSource getAsApplicationJson(
    String appid, String query) {...}
  public DataSource getAsApplicationPhp(
    String appid, String query) {...}
  ...
}
                                            51
Mapping WADL to Java

public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
    String appid, String query) {...}
}




                                        52
Mapping WADL to Java (cont.)
public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
   String appid, String query) {...}
}

<resource path="newsSearch">
 <param name="appid" style="query"/>
 <method name="GET">
  ...
 </method>
</resource>
                                       53
Mapping WADL to Java (cont.)
public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
   String appid, String query) {...}
}

<resource path="newsSearch">
 <param name="appid" style="query"/>
 <method name="GET">
  ...
 </method>
</resource>
                                       54
Mapping WADL to Java (cont.)
public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
   String appid, String query) {...}
}

<resource path="newsSearch">
 <param name="appid" style="query"/>
 <method name="GET">
  ...
 </method>
</resource>
                                       55
Mapping WADL to Java (cont.)
public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
   String appid, String query) {...}
}

<method name="GET">
 <request>
  <param name="query" style="query"/>
 </request>
 <response>
  <representation element="y:ResultSet"/>
 </response>
</method>                                   56
                                             56
Mapping WADL to Java (cont.)
public class NewsSearch {
  public NewsSearch() {...}
  public ResultSet getAsResultSet(
   String appid, String query) {...}
}

<method name="GET">
 <request>
  <param name="query" style="query"/>
 </request>
 <response>
  <representation element="y:ResultSet"/>
 </response>
                                            57
</method>                                    57
Client Code

NewsSearch s = new NewsSearch();
ResultSet rs = s.getAsResultSet("some_app_id","java");
for (Result r: rs.getResultList()) {
    System.out.printf("%s (%s)n",
    r.getTitle(),
    r.getClickUrl());
}




                                                   58
UDDI Basic and Data Types




                            59
Service Architecture
                  Service
                  Provider


    Publish                    Bind


       Service                Service
       Registry              Consumer


                  Discover

UDDI defines a scheme to publish and discover
information about Web services.                 60
WSDL & UDDI




              61
UDDI Runs “Over” SOAP

                        UDDI Registry
     User               Node
     UDDI
  SOAP Request            HTTP        SOAP
                          Server    Processor
     UDDI
 SOAP Response                  UDDI
                           Registry Service


Create, View,              B2B Directory
Update, and Delete
registrations           Platform-neutral

                                                62
What is UDDI?
   Programmatic registration and discovery of
    business entities and their Web services
   Public UDDI registries
    IBM, Microsoft, and SAP have shut down their public
    UDDI registries on January 12, 2006 after first
    announcement in 2000.

   Private UDDI registries within an intranet
    (where we are today)
                                                          63
Business Registration Data
   “White pages”
    – address, contact, and known identifiers
   “Yellow pages”
    – industrial categorizations
         Industry: NAICS (Industry codes - US Govt.)
         Product/Services: UN/SPSC (ECMA)

         Location: Geographical taxonomy


• “Green pages”
    – technical information about services              64
Registry Data
                        Created by standard
                        organizations, industry
Created by businesses   consortium



                            Service Type
      Business               Definitions
    Registrations       (Meta information on
                         WSDL documents)


    businessEntity's
                             tModel's
    businessService's
    bindingTemplate's
                                                  65
UDDI Data Types

    Business Entity               BusinessEntity
       White Pages information

    Business Services               BusinessService
       Yellow Pages information

    Binding Templates                  BindingTemplate
       Green Pages information
       Contains references to          BindingTemplate
       tModels

    tModels                                              Tmodel
       Service Type Definitions
       Contains references to
       WSDL documents                                    Tmodel
                                                                  66
tModel Example
<tModel authorizedName="..." operator="..." tModelKey="...">
   <name>StockQuote Service</name>
   <description xml:lang="en">
       WSDL description of a standard stock quote service interface
   </description>
   <overviewDoc>
      <description xml:lang="en"> WSDL source document. </description>
      <overviewURL> http://stockquote-definitions/stq.wsdl </overviewURL>
   </overviewDoc>
   <categoryBag>
      <keyedReference tModelKey="UUID:..."
                 keyName="uddi-org:types"
                 keyValue="wsdlSpec"/>
   </categoryBag>
</tModel>



                                                                       67
Resources

 Some contents are borrowed from the presentation
  slides of Sang Shin, Java™ Technology Evangelist,
  Sun Microsystems, Inc.
 Some contents are borrowed from the presentation
  slides of Marc Hadley and Ayub Khan
 Web Services and Java, Elsa Estevez, Tomasz
  Janowski and Gabriel Oteniya, UNU-IIST, Macau




                                                      68
Thank you

   thananum@gmail.com
www.facebook.com/imcinstitute
   www.imcinstitute.com



                                69

More Related Content

PDF
Spring MVC Framework
PPTX
Spring Security
PDF
Cisco Live! :: Cisco ASR 9000 Architecture :: BRKARC-2003 | Milan Jan/2014
PPTX
IMS Authentication with AKAv1 and AKAv2
PDF
Hyperledger Indy tutorial
PPTX
Injection flaws
PPTX
PDF
WSO2 Identity Server - Product Overview
Spring MVC Framework
Spring Security
Cisco Live! :: Cisco ASR 9000 Architecture :: BRKARC-2003 | Milan Jan/2014
IMS Authentication with AKAv1 and AKAv2
Hyperledger Indy tutorial
Injection flaws
WSO2 Identity Server - Product Overview

What's hot (20)

PDF
Spring Boot Tutorial | Microservices Spring Boot | Microservices Architecture...
PDF
Spring MVC
PDF
Enterprise JavaBeans(EJB)
PDF
QoS Cheatsheet by packetlife.net
PDF
Spring Framework - Data Access
PPTX
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
PDF
CCNP Security-Secure
PPTX
BGP (Border Gateway Protocol)
PPSX
Asp.net mvc
PDF
OAuth2 and Spring Security
PPTX
Spring Web MVC
PDF
Hyperledger Aries: Open Source Interoperable Identity Solution – Nathan George
PPTX
Juniper round table switching and product overview
PPTX
SSL/TLS Introduction with Practical Examples Including Wireshark Captures
PPTX
AngularJS Architecture
PDF
VXLAN and FRRouting
PPTX
Introduction to spring boot
PPTX
What is gRPC introduction gRPC Explained
PPTX
Cisco umbrella youtube
PPT
Spring Boot Tutorial | Microservices Spring Boot | Microservices Architecture...
Spring MVC
Enterprise JavaBeans(EJB)
QoS Cheatsheet by packetlife.net
Spring Framework - Data Access
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
CCNP Security-Secure
BGP (Border Gateway Protocol)
Asp.net mvc
OAuth2 and Spring Security
Spring Web MVC
Hyperledger Aries: Open Source Interoperable Identity Solution – Nathan George
Juniper round table switching and product overview
SSL/TLS Introduction with Practical Examples Including Wireshark Captures
AngularJS Architecture
VXLAN and FRRouting
Introduction to spring boot
What is gRPC introduction gRPC Explained
Cisco umbrella youtube
Ad

Viewers also liked (20)

PDF
Java Web Services [2/5]: Introduction to SOAP
PDF
Java Web Services [5/5]: REST and JAX-RS
PDF
Java Web Services [1/5]: Introduction to Web Services
PDF
Java Web Services [4/5]: Java API for XML Web Services
PPT
WebServices
ODP
SCDJWS 2. Soap
PPTX
Introduction aux web services
PPT
Java Web Service - Summer 2004
PDF
Jaxp Xmltutorial 11 200108
PPT
Simple API for XML
PPTX
REST API Design for JAX-RS And Jersey
PPT
Xml Java
PPTX
java API for XML DOM
PPT
Soap vs. rest - which is right web service protocol for your need?
PDF
Web Technologies in Java EE 7
PDF
Java Web Services
PPT
6 xml parsing
PDF
Java web services using JAX-WS
PPT
Java XML Parsing
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [5/5]: REST and JAX-RS
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [4/5]: Java API for XML Web Services
WebServices
SCDJWS 2. Soap
Introduction aux web services
Java Web Service - Summer 2004
Jaxp Xmltutorial 11 200108
Simple API for XML
REST API Design for JAX-RS And Jersey
Xml Java
java API for XML DOM
Soap vs. rest - which is right web service protocol for your need?
Web Technologies in Java EE 7
Java Web Services
6 xml parsing
Java web services using JAX-WS
Java XML Parsing
Ad

Similar to Java Web Services [3/5]: WSDL, WADL and UDDI (20)

PPTX
WSDL Services
PPT
PPTX
Lecture 16 - Web Services
DOCX
Webservices
PPTX
Cloud computing 21 concept of wsdl modeling
DOCX
Webservices
DOC
Web services
PPTX
Web Services
PPTX
Web services wsdl
PPT
Developmeant and deployment of webservice
PPTX
Web services wsdl
PPTX
Web services wsdl
PPTX
Ogsi protocol perspective
PPTX
Cloud computing 20 service modelling
PDF
Wsdl1
PDF
Web Services (SOAP, WSDL, UDDI)
PPT
Topic6 Basic Web Services Technology
WSDL Services
Lecture 16 - Web Services
Webservices
Cloud computing 21 concept of wsdl modeling
Webservices
Web services
Web Services
Web services wsdl
Developmeant and deployment of webservice
Web services wsdl
Web services wsdl
Ogsi protocol perspective
Cloud computing 20 service modelling
Wsdl1
Web Services (SOAP, WSDL, UDDI)
Topic6 Basic Web Services Technology

More from IMC Institute (20)

PDF
นิตยสาร Digital Trends ฉบับที่ 14
PDF
Digital trends Vol 4 No. 13 Sep-Dec 2019
PDF
บทความ The evolution of AI
PDF
IT Trends eMagazine Vol 4. No.12
PDF
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
PDF
IT Trends 2019: Putting Digital Transformation to Work
PDF
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
PDF
IT Trends eMagazine Vol 4. No.11
PDF
แนวทางการทำ Digital transformation
PDF
บทความ The New Silicon Valley
PDF
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
PDF
แนวทางการทำ Digital transformation
PDF
The Power of Big Data for a new economy (Sample)
PDF
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
PDF
IT Trends eMagazine Vol 3. No.9
PDF
Thailand software & software market survey 2016
PPTX
Developing Business Blockchain Applications on Hyperledger
PDF
Digital transformation @thanachart.org
PDF
บทความ Big Data จากบล็อก thanachart.org
PDF
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
นิตยสาร Digital Trends ฉบับที่ 14
Digital trends Vol 4 No. 13 Sep-Dec 2019
บทความ The evolution of AI
IT Trends eMagazine Vol 4. No.12
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IT Trends 2019: Putting Digital Transformation to Work
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IT Trends eMagazine Vol 4. No.11
แนวทางการทำ Digital transformation
บทความ The New Silicon Valley
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
แนวทางการทำ Digital transformation
The Power of Big Data for a new economy (Sample)
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IT Trends eMagazine Vol 3. No.9
Thailand software & software market survey 2016
Developing Business Blockchain Applications on Hyperledger
Digital transformation @thanachart.org
บทความ Big Data จากบล็อก thanachart.org
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Empathic Computing: Creating Shared Understanding
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
Teaching material agriculture food technology
PDF
KodekX | Application Modernization Development
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Encapsulation theory and applications.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The AUB Centre for AI in Media Proposal.docx
Empathic Computing: Creating Shared Understanding
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Teaching material agriculture food technology
KodekX | Application Modernization Development
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Chapter 3 Spatial Domain Image Processing.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation_ Review paper, used for researhc scholars
Building Integrated photovoltaic BIPV_UPV.pdf
Spectroscopy.pptx food analysis technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Review of recent advances in non-invasive hemoglobin estimation
Encapsulation theory and applications.pdf
Spectral efficient network and resource selection model in 5G networks
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Programs and apps: productivity, graphics, security and other tools

Java Web Services [3/5]: WSDL, WADL and UDDI

  • 1. Topic 3 WSDL and WADL and UDDI Assoc.Prof. Dr. Thanachart Numnonda www.imcinstitute.com August 2010
  • 2. Agenda  What is and Why WSDL?  WSDL Elements  WSDL Transmission Patterns  WADL Basics and Elements  UDDI Basics and Data Types 2
  • 3. What is and why WSDL? 3
  • 4. What is WSDL? • XML language for describing web services • Web service is described as – A set of communication endpoints (ports) • Endpoint is made of two parts – Abstract definitions of operations and messages – Concrete binding to networking protocol (and corresponding endpoint address) and message encoding • Why this separation? – Enhance reusability (of the abstract part, for example) 4
  • 5. WSDL Service Description • WSDL is “the interface for Web Services” describing: • What a service does - the operations (methods) the service provides, and the data (arguments and returns) needed to invoke them. • How a service is accessed - details about data formats and protocols necessary to access the service operations. • Where a service is located - details of the protocol- specific network address, such as a URL. 5
  • 6. Where is WSDL Used? Web service Web service W requester provider (4) Invoke web e service Servlets JAXR b Business partner or other system soap request WSDL Document (3) Retrieve WSDL definition Soap request (2) Search for web service (1) Register web UDDI service Soap request UDDI service Soap request Registry 6
  • 7. Why WSDL? source: WSDL 1.2 primer 7
  • 8. Why WSDL? (cont.) • Enables automation of communication details between communicating partners – Machines can read WSDL – Machines can invoke a service defined in WSDL • Discoverable through registry • Arbitration – 3rd party can verify if communication conforms to WSDL 8
  • 9. WSDL Document Structure <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" targetNamespace="your namespace here" xmlns:tns="your namespace here" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap"> <wsdl:types> <xs:schema targetNamespace="your namespace here (could be another) " xmlns:xsd="http://www.w3.org/2001/XMLSchema" <!-- Define types and possibly elements here --> </schema> </wsdl:types> <wsdl:message name="some operation input"> <!-- part(s) here --> </wsdl:message> <wsdl:message name="some operation output"> <!-- part(s) here --> </wsdl:message> <wsdl:portType name="your type name"> <!-- define operations here in terms of their messages --> </wsdl:portType> <wsdl:binding name="your binding name" type="tns:port type name above"> <!-- define style and transport in general and use per operation --> </wsdl:binding> <wsdl:service> <!-- define a port using the above binding and a URL --> </wsdl:service> </wsdl:definitions> 9
  • 11. WSDL Structure  Abstract part – Types – Message – Operation – Port Type  Concrete part – Binding – Port – Service 11
  • 12. WSDL Structure - Abstract  port type - logical collection of related operations  operation - abstract description of an action supported by the service  message - data exchanged in a single logical transmission  types - data structures that will be exchanged as parts of messages 12
  • 13. WSDL Structure - Concrete  interface bindings - message encoding and protocol binding for all operations and messages defined in a given porttype  ports - combine the interface binding information with a network address specified by a URI  services - are logical groupings of ports 13
  • 16. WSDL : Example (cont.) 16
  • 17. WSDL Elements : Definitions  name attribute - corresponds to the name of the web service. It is only for documentation and is optional  targetNamespace attribute - a URI for the entire WSDL file  default namespace - all elements without a namespace prefix, such as message or portType, are assumed to be part of the default WSDL namespace: http://schemas.xmlsoap.org/wsdl/  other XML namespace declarations 17
  • 18. WSDL Elements : Type  Data type definitions  Used to describe exchanged messages  Uses W3C XML Schema as canonical type system 18
  • 19. WSDL Example: Types <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/”> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name=”tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> 19
  • 20. WSDL Elements : Message  A message describes the abstract form of an input, output or a fault message.  A message describes the data being communicated.  Each message has a unique name within the WSDL document and contains a collection of parts.  A message may have several parts.  A part may belong to several messages. 20
  • 21. WSDL Elements : Part  Parts provide a flexible mechanism for describing the logical content of messages.  A part element has two properties: – name : represented by the name attribute, which must be unique among all the part elements of the message element – kind : defined as either a type or an element attribute: • element - the payload of the message on the wire is precisely the XML element • type - any element conforming to the type 21
  • 22. WSDL Elements : PortType  portType is a collection of one or more related operations describing the interface of a web service.  portType definition is a collection of operation elements.  Generally, WSDL documents contain only one portType element, because different web service interface definitions are written with different documents.  portType has a single name attribute.  The name of portType together with the namespace of the WSDL document define a unique name for the portType. 22
  • 23. WSDL Elements : Operation  operation defines a method of a web service, including the name of the method, input parameters, and the output or return type of the method.  All operations in a portType must have different names.  Each operation may define: – input message – output message – fault message  An operation in WSDL is the equivalent of a method signature in Java. 23
  • 24. Abstract Elements : Example <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> <!-- More operations --> </portType> 24
  • 25. WSDL Elements : Binding  The binding element specifies how to format messages in a protocol specific manner: – message encoding – protocol binding  Each portType can have several binding elements associated with it.  Each binding specifies how to invoke operations using particular transport protocols. For instance: SOAP over HTTP, SOAP over SMTP, etc. 25
  • 26. WSDL Elements : Binding (cont.)  The binding element has two attributes: – name : must be unique among all binding elements defined in the WSDL document – type : identifies which portType the binding describes 26
  • 27. WSDL Elements : Binding (cont.)  Defines protocol details and message format for operations and messages defined by a particular portType  Specify one protocol out of  SOAP (SOAP over HTTP, SOAP over SMTP)  HTTP GET/POST  Provides extensibility mechanism  Can includes binding extensibility elements  Binding extensibility elements are used to specify the concrete grammar 27
  • 28. RPC and Document-style RPC Document-style  Procedure call  Business documents  Method signature  Schema  Marshaling  Parsing & Validating  Tightly-coupled  Loosely coupled  Point to point  End to end  Synchronous  Asynchronous  Typically within  Typically over Intranet internet 28
  • 29. RPC and Document-style (cont.) RPC Document-style  Within Enterprise  Between enterprise and enterprise  Simple, point-to-  Complex, end to end point with intermediaries  Short running  Long running business process business process  Reliable and high  Unpredictable bandwidth bandwidth  Trusted  Blind trust environment 29
  • 30. Binding Protocol Encoding Rules  The binding also specifies the encoding rules used in serializing parts of a message into XML: – literal encoding: takes the WSDL types defined in XML Schemaand “literally” uses those definitions to represent the XML content of messages. Abstract WSDL types becomes concrete types – SOAP encoding : considers the XML Schema definitions as abstract entities and translates them into XML using SOAP encoding rules  Literal encoding is used for document style interactions.  SOAP encoding is used for RPC style interactions. 30
  • 31. WSDL Elements : Port  Port specifies the network address of the end-point hosting the web service.  port is a single end-point defined as a combination of a binding and a network address.  There can be many ports for a binding, just like many implementations for the same interface.  The soap:address element is used to give a port an address. 31
  • 32. WSDL Elements : Service  A service is a collection of ports.  Although a WSDL document can contain a collection of service elements, by convention a WSDL document contains a single service.  Usage: group the ports that are related to the same service interface (portType) but expressed by different protocols (binding). 32
  • 33. Concrete Elements : Example <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> 33
  • 35. Transmission Patterns in WSDL  One-way  The endpoint receives a message  Request/response  The endpoint receives a message, and sends a correlated message  Notification  The endpoint sends a message  Solicit/response  The endpoint sends a message, and receives a correlated message 35
  • 37. One-way Operation : Example <operation name=”submitPurchase”> <input message=”purchase”/> </operation> 37
  • 38. Request/Response Operation : Example <operation name=”submitPurchase”> <input message=”purchase”/> <output message=”confirmation”/> </operation> <operation name=”submitPurchase”> <input message=”purchase”/> <output message=”confirmation”/> <fault message=”faultMessage”/> </operation> 38
  • 39. Notification Operation : Example <operation name=”deliveryStatus”> <output message=”trackingInformation”/> </operation> 39
  • 40. Solicit/Response Operation : Example <operation name=”clientQuery”> <output message=”bandwidthRequest”/> <input message=”bandwidthInfo”/> <fault message=”faultMessage”/> </operation> 40
  • 41. WADL Basic and Elements 41
  • 42. WADL  Web Application Description Language  An XML-based file format  A machine-readable description of HTTP- based REST web Services  Development language+platform neutral 42
  • 43. WADL Elements • Grammars − Currently specify use of W3C XML Schema or RelaxNG • Resources – Identified by a URI template – Specify which methods are supported • Method – Specify details of request and response contents – Often refer to representations • Representation – Describe the format of a HTTP entity – Can refer to grammars 43
  • 44. WADL Document Structure <application> <doc/>* <grammars/>? <resources base='anyURI'>? <doc/>* <resource path='template' type='anyURI+'?>+ <doc/>* <param/>* ( <method/> | <resource/> )+ </resource> </resources> ( <method/> | <representation/> | <fault/> | <resource_type/>)* </application> * => 0 or more ? => 0 or 1 + => 1 or more 44
  • 45. WADL Method Structure <method name='NMTOKEN'? id='ID'? href='anyURI'?> <doc/>* <request>? <param>* <representation/>* </request> <response>? ( <representation/> | <fault/> )* </response> </method> 45
  • 46. Yahoo News Search • http://api.search.yahoo.com/NewsSearchService/ V1/newsSearch • Query parameters – appid: get this from Yahoo by registering – query: space separated list of keywords – many others including language, sort, result count etc. • Get back results as XML, JSON or PHP – XML schema available for normal and error responses 46
  • 47. Yahoo News Search in WADL <application xmlns:...> <grammars> <include href=".../NewsSearchResponse.xsd"/> <include href=".../NewsSearchError.xsd"/> </grammars> <resources base="http://api.search.yahoo.com/NewsSearchService/V1/"> <resource path="newsSearch"> <param name="appid" type="xsd:string" required="true" style="query"/> <method href="#search"/> </resource> </resources> 47
  • 48. Yahoo News Search in WADL (cont.) <method name="GET" id="search"> <request> <param name="query" type="xsd:string" required="true" style="query"/> <param name="type" type="xsd:string" default="all" style="query"> <option value="all"/> <option value="any"/> <option value="phrase"/> </param> ... </request> <response> <representation href="#resultSet"/> <fault href="#searchError"/> </response> </method> 48
  • 49. Yahoo News Search in WADL (cont.) <representation id="resultSet" mediaType="application/xml" element="yn:ResultSet"> <doc xml:lang="en" title="A matching list of news items"/> </representation> <fault id="searchError" status="400" mediaType="application/xml" element="ya:Error"/> 49
  • 50. wadl2java • Open source project – http://wadl.dev.java.net • Generates client-side stubs • Command line or Apache Ant task − java -jar wadl2java.jar • Uses JAXB for XML processing • file.wadl 50
  • 51. Yahoo News Search Stub public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} public DataSource getAsApplicationXml( String appid, String query) {...} public DataSource getAsApplicationJson( String appid, String query) {...} public DataSource getAsApplicationPhp( String appid, String query) {...} ... } 51
  • 52. Mapping WADL to Java public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} } 52
  • 53. Mapping WADL to Java (cont.) public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} } <resource path="newsSearch"> <param name="appid" style="query"/> <method name="GET"> ... </method> </resource> 53
  • 54. Mapping WADL to Java (cont.) public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} } <resource path="newsSearch"> <param name="appid" style="query"/> <method name="GET"> ... </method> </resource> 54
  • 55. Mapping WADL to Java (cont.) public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} } <resource path="newsSearch"> <param name="appid" style="query"/> <method name="GET"> ... </method> </resource> 55
  • 56. Mapping WADL to Java (cont.) public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} } <method name="GET"> <request> <param name="query" style="query"/> </request> <response> <representation element="y:ResultSet"/> </response> </method> 56 56
  • 57. Mapping WADL to Java (cont.) public class NewsSearch { public NewsSearch() {...} public ResultSet getAsResultSet( String appid, String query) {...} } <method name="GET"> <request> <param name="query" style="query"/> </request> <response> <representation element="y:ResultSet"/> </response> 57 </method> 57
  • 58. Client Code NewsSearch s = new NewsSearch(); ResultSet rs = s.getAsResultSet("some_app_id","java"); for (Result r: rs.getResultList()) { System.out.printf("%s (%s)n", r.getTitle(), r.getClickUrl()); } 58
  • 59. UDDI Basic and Data Types 59
  • 60. Service Architecture Service Provider Publish Bind Service Service Registry Consumer Discover UDDI defines a scheme to publish and discover information about Web services. 60
  • 62. UDDI Runs “Over” SOAP UDDI Registry User Node UDDI SOAP Request HTTP SOAP Server Processor UDDI SOAP Response UDDI Registry Service Create, View, B2B Directory Update, and Delete registrations Platform-neutral 62
  • 63. What is UDDI?  Programmatic registration and discovery of business entities and their Web services  Public UDDI registries IBM, Microsoft, and SAP have shut down their public UDDI registries on January 12, 2006 after first announcement in 2000.  Private UDDI registries within an intranet (where we are today) 63
  • 64. Business Registration Data  “White pages” – address, contact, and known identifiers  “Yellow pages” – industrial categorizations  Industry: NAICS (Industry codes - US Govt.)  Product/Services: UN/SPSC (ECMA)  Location: Geographical taxonomy • “Green pages” – technical information about services 64
  • 65. Registry Data Created by standard organizations, industry Created by businesses consortium Service Type Business Definitions Registrations (Meta information on WSDL documents) businessEntity's tModel's businessService's bindingTemplate's 65
  • 66. UDDI Data Types  Business Entity BusinessEntity White Pages information  Business Services BusinessService Yellow Pages information  Binding Templates BindingTemplate Green Pages information Contains references to BindingTemplate tModels  tModels Tmodel Service Type Definitions Contains references to WSDL documents Tmodel 66
  • 67. tModel Example <tModel authorizedName="..." operator="..." tModelKey="..."> <name>StockQuote Service</name> <description xml:lang="en"> WSDL description of a standard stock quote service interface </description> <overviewDoc> <description xml:lang="en"> WSDL source document. </description> <overviewURL> http://stockquote-definitions/stq.wsdl </overviewURL> </overviewDoc> <categoryBag> <keyedReference tModelKey="UUID:..." keyName="uddi-org:types" keyValue="wsdlSpec"/> </categoryBag> </tModel> 67
  • 68. Resources  Some contents are borrowed from the presentation slides of Sang Shin, Java™ Technology Evangelist, Sun Microsystems, Inc.  Some contents are borrowed from the presentation slides of Marc Hadley and Ayub Khan  Web Services and Java, Elsa Estevez, Tomasz Janowski and Gabriel Oteniya, UNU-IIST, Macau 68
  • 69. Thank you thananum@gmail.com www.facebook.com/imcinstitute www.imcinstitute.com 69