SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

UML for OOAD
UML for OOADUML for OOAD
UML for OOAD
Dang Tuan
 
Object and class relationships
Object and class relationshipsObject and class relationships
Object and class relationships
Pooja mittal
 
15. Transactions in DBMS
15. Transactions in DBMS15. Transactions in DBMS
15. Transactions in DBMS
koolkampus
 

La actualidad más candente (20)

Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
 
Acid properties
Acid propertiesAcid properties
Acid properties
 
Communication in client server system.pptx
Communication in client server system.pptxCommunication in client server system.pptx
Communication in client server system.pptx
 
UML
UMLUML
UML
 
Basic programming
Basic programmingBasic programming
Basic programming
 
Types of attributes (160210107054)
Types of attributes  (160210107054)Types of attributes  (160210107054)
Types of attributes (160210107054)
 
SQL Fundamentals
SQL FundamentalsSQL Fundamentals
SQL Fundamentals
 
Unit 3(advanced state modeling & interaction meodelling)
Unit  3(advanced state modeling & interaction meodelling)Unit  3(advanced state modeling & interaction meodelling)
Unit 3(advanced state modeling & interaction meodelling)
 
Database : Relational Data Model
Database : Relational Data ModelDatabase : Relational Data Model
Database : Relational Data Model
 
PARALLELISM IN MULTICORE PROCESSORS
PARALLELISM  IN MULTICORE PROCESSORSPARALLELISM  IN MULTICORE PROCESSORS
PARALLELISM IN MULTICORE PROCESSORS
 
Component Diagram
Component DiagramComponent Diagram
Component Diagram
 
UML for OOAD
UML for OOADUML for OOAD
UML for OOAD
 
Object and class relationships
Object and class relationshipsObject and class relationships
Object and class relationships
 
MVC architecture
MVC architectureMVC architecture
MVC architecture
 
Rdbms
RdbmsRdbms
Rdbms
 
Lan Switching[1]
Lan Switching[1]Lan Switching[1]
Lan Switching[1]
 
15. Transactions in DBMS
15. Transactions in DBMS15. Transactions in DBMS
15. Transactions in DBMS
 
DBMS PPT
DBMS PPTDBMS PPT
DBMS PPT
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
 
Name services
Name servicesName services
Name services
 

Destacado

Xml Java
Xml JavaXml Java
Xml Java
cbee48
 
java API for XML DOM
java API for XML DOMjava API for XML DOM
java API for XML DOM
Surinder Kaur
 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7
Lukáš Fryč
 

Destacado (20)

Java Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAPJava Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAP
 
Java Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RSJava Web Services [5/5]: REST and JAX-RS
Java Web Services [5/5]: REST and JAX-RS
 
Java Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web ServicesJava Web Services [1/5]: Introduction to Web Services
Java Web Services [1/5]: Introduction to Web Services
 
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web ServicesJava Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web Services
 
WebServices
WebServicesWebServices
WebServices
 
SCDJWS 2. Soap
SCDJWS 2. SoapSCDJWS 2. Soap
SCDJWS 2. Soap
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web services
 
JAXP
JAXPJAXP
JAXP
 
Java Web Service - Summer 2004
Java Web Service - Summer 2004Java Web Service - Summer 2004
Java Web Service - Summer 2004
 
Jaxp Xmltutorial 11 200108
Jaxp Xmltutorial 11 200108Jaxp Xmltutorial 11 200108
Jaxp Xmltutorial 11 200108
 
Simple API for XML
Simple API for XMLSimple API for XML
Simple API for XML
 
REST API Design for JAX-RS And Jersey
REST API Design for JAX-RS And JerseyREST API Design for JAX-RS And Jersey
REST API Design for JAX-RS And Jersey
 
Xml Java
Xml JavaXml Java
Xml Java
 
java API for XML DOM
java API for XML DOMjava API for XML DOM
java API for XML DOM
 
Soap vs. rest - which is right web service protocol for your need?
Soap vs. rest -  which is right web service protocol for your need?Soap vs. rest -  which is right web service protocol for your need?
Soap vs. rest - which is right web service protocol for your need?
 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7
 
Java Web Services
Java Web ServicesJava Web Services
Java Web Services
 
6 xml parsing
6   xml parsing6   xml parsing
6 xml parsing
 
Java web services using JAX-WS
Java web services using JAX-WSJava web services using JAX-WS
Java web services using JAX-WS
 
Java XML Parsing
Java XML ParsingJava XML Parsing
Java XML Parsing
 

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

Topic6 Basic Web Services Technology
Topic6 Basic Web Services TechnologyTopic6 Basic Web Services Technology
Topic6 Basic Web Services Technology
sanjoysanyal
 
Topic6 Basic Web Services Technology
Topic6 Basic Web Services TechnologyTopic6 Basic Web Services Technology
Topic6 Basic Web Services Technology
sanjoysanyal
 

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

WSDL Services
WSDL ServicesWSDL Services
WSDL Services
 
Wsdl
WsdlWsdl
Wsdl
 
Lecture 16 - Web Services
Lecture 16 - Web ServicesLecture 16 - Web Services
Lecture 16 - Web Services
 
Web services overview
Web services overviewWeb services overview
Web services overview
 
Webservices
WebservicesWebservices
Webservices
 
Cloud computing 21 concept of wsdl modeling
Cloud computing 21 concept of wsdl modelingCloud computing 21 concept of wsdl modeling
Cloud computing 21 concept of wsdl modeling
 
Webservices
WebservicesWebservices
Webservices
 
Web services
Web servicesWeb services
Web services
 
Web Services
Web Services Web Services
Web Services
 
Web services wsdl
Web services wsdlWeb services wsdl
Web services wsdl
 
Developmeant and deployment of webservice
Developmeant and deployment of webserviceDevelopmeant and deployment of webservice
Developmeant and deployment of webservice
 
Web services wsdl
Web services wsdlWeb services wsdl
Web services wsdl
 
Web services wsdl
Web services wsdlWeb services wsdl
Web services wsdl
 
Ogsi protocol perspective
Ogsi protocol perspectiveOgsi protocol perspective
Ogsi protocol perspective
 
Cloud computing 20 service modelling
Cloud computing 20 service modellingCloud computing 20 service modelling
Cloud computing 20 service modelling
 
Wsdl1
Wsdl1Wsdl1
Wsdl1
 
Ajax
AjaxAjax
Ajax
 
Topic6 Basic Web Services Technology
Topic6 Basic Web Services TechnologyTopic6 Basic Web Services Technology
Topic6 Basic Web Services Technology
 
Topic6 Basic Web Services Technology
Topic6 Basic Web Services TechnologyTopic6 Basic Web Services Technology
Topic6 Basic Web Services Technology
 
Web services
Web servicesWeb services
Web services
 

Más de IMC Institute

Más de IMC Institute (20)

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

Último

Último (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

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