SlideShare a Scribd company logo
1 of 40
Download to read offline
Introduction to Web Service

Sagara Gunathunga
( Apache web Service and Axis committer )
CONTENTS
Why you need
Web Services
     ?
How do you interact with on-line financial service? 
Conclusion
How do you interact with on-line financial service? 



                                            Bank-A




                                            Bank-B




                                             Bank-C
How do you interact with on-line financial service? 
                                      WS -A



                                                Bank-A


                                        WS -B




                                                Bank-B


                                    WS -C



                                                Bank-C
Conclusion
What are Web services?




• loosely coupled: - they can be changed independently
• platform independent
• contracted: in and output are publicly available
• components: interface encapsulates the code
• XML-based interfaces: - human readable
• firewall friendly
•self-describing (allows for discovery of their functionality)
Web Service Characteristics
Web Services Stack
Web Services Stack
Web Services Specification

There are three basic specifications, forming the basis
for state-of-the-art Web-Service technology
Simple Object Access Protocol (SOAP)
SOAP message structure
SOAP ..
• SOAP originally stood for "Simple Object Access
  Protocol" .

• Web Services expose useful functionality to Web users
  through a standard Web protocol called SOAP.

• Soap is an XML vocabulary standard to enable programs
  on separate computers to interact across any network.
  SOAP is a simple markup language for describing
  messages between applications.
•
• Soap uses mainly HTTP as a transport protocol. That is,
  HTTP message contains a SOAP message as its
  payload section.
SOAP ..

A SOAP message is an ordinary XML document
  containing the following elements:
  • A required Envelope element that identifies the XML
    document as a SOAP message.
  • An optional Header element that contains header
    information.
  • A required Body element that contains call and
    response information.
  • An optional Fault element that provides information
    about errors that occurred while processing the
    message.
SOAP over HTTP

HTTP Headers

<soap:Envelope>           SOAP Envelope
    <soap:Header>
                              Header
          XML…
    </soap:Header>
    <soap:Body>               Body
          XML payload…   Message Pay Load
     </soap:Body>
</soap:Envelope>
Example - SOAP Request

POST /InStock HTTP/1.1
Host: www.stock.org
Content-Type: application/soap+xml; charset=utf-8 Content-Length: 150


<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle=http://www.w3.org/2001/12/soap-encoding”>

   <soap:Body xmlns:m="http://www.stock.org/stock">  
         <m:GetStockPrice>
             <m:StockName>IBM</m:StockName>    
         </m:GetStockPrice>
   </soap:Body>
</soap:Envelope>
SOAP Response
 HTTP/1.1 200 OK
 Content-Type: application/soap; charset=utf-8
 Content-Length: 126


 <?xml version="1.0"?>
 <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-
 envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-
 encoding">

     <soap:Body xmlns:m="http://www.stock.org/stock">
          <m:GetStockPriceResponse>
                  <m:Price>34.5</m:Price>
          </m:GetStockPriceResponse>
     </soap:Body>
 </soap:Envelope>
Web Services Description Language (WSDL)

» WSDL stands for Web Services Description Language.

» WSDL is an XML vocabulary for describing Web
» services. It allows developers to describe Web Services and
  their capabilities, in a standard manner.

» WSDL specifies what a request message must contain and
  what the response message will look like in unambiguous
  notation. In other words, it is a contract between the XML Web
  service and the client who wishes to use this service.

» In addition to describing message contents, WSDL defines
  where the service is available and what communications
  protocol is used to talk to the service.
WSDL Structure
 » portType
    • Abstract definition of a
      service (set of operations)
                                                         Service
 » Multiple bindings per
   portType:
    • How to access it                    Port                      Port
                                    (e.g. http://host/svc)

    • SOAP, JMS, direct call
                                       Binding                     Binding
                                        (e.g. SOAP)

 » Ports
    • Where to access it
                                                       portType

                                                     operation(s)
                                             inMesage         outMessage

                                               Abstract interface
The WSDL Document Structure


» A WSDL document is just a simple XML document.

» It defines a web service using these major elements:

   • port type - The operations performed by the web service.

   • message - The messages used by the web service.

   • types - The data types used by the web service.

   • binding - The communication protocols used by the web
     service.
Example WSDL
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions>
          <wsdl:message name="execLocalCommandResponse">
          <wsdl:message name="execLocalCommandRequest">
          <wsdl:portType name="SJwsImp">
               <wsdl:operation name="execLocalCommand" parameterOrder="in0">
                  <wsdl:input message="impl:execLocalCommandRequest"
                                    name="execLocalCommandRequest"/>
                   <wsdl:output message="impl:execLocalCommandResponse"
                                    name="execLocalCommandResponse"/>
             </wsdl:operation>
         </wsdl:portType>
         <wsdl:binding name="SubmitjobSoapBinding" type="impl:SJwsImp">
             <wsdlsoap:binding style="rpc"
                             transport="http://schemas.xmlsoap.org/soap/http"/>
                   <wsdl:operation name="execLocalCommand">
                           <wsdlsoap:operation soapAction=""/>
                           <wsdl:input name="execLocalCommandRequest">
                           <wsdl:output name="execLocalCommandResponse">
                  </wsdl:operation>
           </wsdl:binding>
       <wsdl:service name="SJwsImpService">
            <wsdl:port binding="impl:SubmitjobSoapBinding" name="Submitjob">
       </wsdl:service>
</wsdl:definitions>
Example: WSDL types for Custom Data
Definition
<wsdl:types>
    <schema targetNamespace="http://.../GCWS/services/Submitjob"
            xmlns:impl="http://.../GCWS/services/Submitjob"
            xmlns="http://www.w3.org/2001/XMLSchema">

       <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />

      <complexType name="ArrayOf_xsd_string">
           <complexContent>
                    <restriction base="soapenc:Array">
                           <attribute ref="soapenc:arrayType"
                                     wsdl:arrayType="xsd:string[]" />
                    </restriction>
          </complexContent>
     </complexType>

      <element name="ArrayOf_xsd_string" nillable="true"
                          type="impl:ArrayOf_xsd_string" />
    </schema>
</wsdl:types>
Example - message

<wsdl:message
name="execLocalCommandResponse">
     <wsdl:part
                name="execLocalCommandReturn"
                type="impl:ArrayOf_xsd_string" />
 </wsdl:message>

<wsdl:message         name="execLocalCommandRequest">
    <wsdl:part name="in0" type="xsd:string" />
</wsdl:message>
WSDL - portTypes

» portType elements map messages to
  operations.

» You can think of portType==class,
  operation==class methods.

» Operations can contain input, output, and/or fault
  bindings for messages.

» An operation may support of the following
  message styles:
  •   One-way: request only
  •   Two-way: request/response
  •   Solicit-response: server “push” and client response
  •   Notification: one-way server push
<wsdl:portType name="SJwsImp">

  <wsdl:operation    name="execLocalCommand"
                     parameterOrder="in0">
          <wsdl:input
                 message="impl:execLocalCommandRequest"
                 name="execLocalCommandRequest" />

          <wsdl:output
                message="impl:execLocalCommandResponse"
                 name="execLocalCommandResponse" />
 </wsdl:operation>

</wsdl:portType>
Service and Port Definitions


» So far, we have defined the class method interfaces
  (portTypes) and the rules for binding to a particular
  protocol.
» Port elements define how the bindings (and thus the
  portTypes) are associated with a particular server.
» The service element collects ports.
<wsdl:service name="SJwsImpService">

   <wsdl:port
                  binding="impl:SubmitjobSoapBinding"
                 name="Submitjob">
        <wsdlsoap:address
                 location="http://.../GCWS/services/Submitjob" />
    </wsdl:port>

</wsdl:service>
PortType Bindings


» portTypes are abstract interface definitions.
  • Don’t say anything about how to invoke a remote
    method.
» Remote invocations are defined in binding
  elements.
» Binding elements are really just place holders
  that are extended for specific protocols
  • WSDL spec provides SOAP, HTTP GET/POST, and
    MIME extension schema examples.
<wsdl:binding
            name="SubmitjobSoapBinding" type="impl:SJwsImp">

    <wsdlsoap:binding style="rpc"
              transport="http://schemas.xmlsoap.org/soap/http" />

    <wsdl:operation name="execLocalCommand“>
       <wsdlsoap:operation soapAction="" />
       <wsdl:input name="execLocalCommandRequest">
            <wsdlsoap:body
                 encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
                 namespace="http://.../GCWS/services/Submitjob"
                 use="encoded" />
         </wsdl:input>
         <wsdl:output name="execLocalCommandResponse">
            <wsdlsoap:body
                encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
                namespace=http://.../GCWS/services/Submitjob
                  use="encoded" />
         </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
Web Service frameworks (Java)
Contract first WS development

  1.   Start with existing WSDL document or writing a new WSDL
       document, all of the web service frameworks support for contact first
       web service development.

  2.   Both Apache Axis2 and CXF provide ‘WSDL2Java” tool , that
       capable to generate source codes from WSDL contract. Spring -WS
       doesn't provide any code generation tool but supports for Contact first
       approach .
Contract first WS development with Axis2




   1. Use existing WSDL or write a simple WSDL using
      a XML editor or Eclipse WSDL editor.
   2. Generate java skeleton using “WSDL2JAVA” tool.
   3. Complete server side methods .
   4. Package as .AAR ( with the generated service.xml )
   5. Deploy in to “services” directory of Axis2
      installation.
Code first WS development

  1.   Start with existing codes , most of the time people use this approach
       when they want to expose existing business features as a web
       service.

  2.   Most of the Web service framework supports for automatic WSDL
       generation from services. ( Axis2 , CXF)

  3.   Users can utilize this automatic code generation feature or they can
       disable this feature to assign existing WSDL file.
Code first WS development with Axis2




 Optionally you can write a interface too, specially with
 Spring, Hibernate and AOP related services.




Service .xml - is a Axis2 specific service description file that contains important
meta data about the service such as service class , service interface , message
receivers etc.
WS client development with Axis2




 Once you have a service description for a service you can generate WS
 client code using a tools like “WSDL2JAVA” , the generated code contain
 the required logic to serialize messages, service location , QoS attributes
 etc.
References

 • This slide and source codes for samples.
     •http://people.apache.org/~sagara/ws/intro10




 •http://ws.apache.org/axis2/
 •http://wso2.org/library/95
 •http://www.developer.com/services/article.php/3613896/Writing-an
 • http://wso2.org/library/2873
Thank You
            Aeturnum Lanka (Pvt) Ltd
1 9 7 , S ta n le y T h ila k a r a tn a M w , N u g e g o d a 1 0 2 5 0 , S r i
                                     Lanka
          Phone: + 9 4 1 1 5 5 1 8 1 7 7 | Email:
               in fo @ a e tu r n u m .c o m

More Related Content

What's hot

Intro to web services
Intro to web servicesIntro to web services
Intro to web servicesNeil Ghosh
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Peter R. Egli
 
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 ServicesIMC Institute
 
Web services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGigWeb services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGigMandakini Kumari
 
WebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDIWebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDIRajkattamuri
 
SOAP--Simple Object Access Protocol
SOAP--Simple Object Access ProtocolSOAP--Simple Object Access Protocol
SOAP--Simple Object Access ProtocolMasud Rahman
 
Web service Introduction
Web service IntroductionWeb service Introduction
Web service IntroductionMadhukar Kumar
 
WebService-Java
WebService-JavaWebService-Java
WebService-Javahalwal
 
Java web services using JAX-WS
Java web services using JAX-WSJava web services using JAX-WS
Java web services using JAX-WSIndicThreads
 
Web Services - A brief overview
Web Services -  A brief overviewWeb Services -  A brief overview
Web Services - A brief overviewRaveendra Bhat
 
Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)Mehul Boricha
 
Java Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDIJava Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDIIMC Institute
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical ApproachMadhaiyan Muthu
 

What's hot (20)

Intro to web services
Intro to web servicesIntro to web services
Intro to web services
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)
 
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
 
Web services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGigWeb services soap and rest by mandakini for TechGig
Web services soap and rest by mandakini for TechGig
 
Soap and Rest
Soap and RestSoap and Rest
Soap and Rest
 
WebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDIWebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDI
 
SOAP--Simple Object Access Protocol
SOAP--Simple Object Access ProtocolSOAP--Simple Object Access Protocol
SOAP--Simple Object Access Protocol
 
Web service Introduction
Web service IntroductionWeb service Introduction
Web service Introduction
 
WebService-Java
WebService-JavaWebService-Java
WebService-Java
 
Overview of java web services
Overview of java web servicesOverview of java web services
Overview of java web services
 
Java web services using JAX-WS
Java web services using JAX-WSJava web services using JAX-WS
Java web services using JAX-WS
 
Web Services - A brief overview
Web Services -  A brief overviewWeb Services -  A brief overview
Web Services - A brief overview
 
Wsdl
WsdlWsdl
Wsdl
 
Web Services
Web ServicesWeb Services
Web Services
 
Web Services - WSDL
Web Services - WSDLWeb Services - WSDL
Web Services - WSDL
 
Wsdl
WsdlWsdl
Wsdl
 
Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)
 
Java Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDIJava Web Services [3/5]: WSDL, WADL and UDDI
Java Web Services [3/5]: WSDL, WADL and UDDI
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 

Viewers also liked

Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentationguest0df6b0
 
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Martin Necasky
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTPradeep Kumar
 
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...ecosio GmbH
 
Json-based Service Oriented Architecture for the web
Json-based Service Oriented Architecture for the webJson-based Service Oriented Architecture for the web
Json-based Service Oriented Architecture for the webkriszyp
 
Services web RESTful
Services web RESTfulServices web RESTful
Services web RESTfulgoldoraf
 

Viewers also liked (19)

Web Service Presentation
Web Service PresentationWeb Service Presentation
Web Service Presentation
 
Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)Web Services - Architecture and SOAP (part 1)
Web Services - Architecture and SOAP (part 1)
 
Introduction to Web Service
Introduction to Web Service Introduction to Web Service
Introduction to Web Service
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and REST
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Web services
Web servicesWeb services
Web services
 
Web services
Web servicesWeb services
Web services
 
Webservices
WebservicesWebservices
Webservices
 
Introduction to Web Services
Introduction to Web ServicesIntroduction to Web Services
Introduction to Web Services
 
Web Services in the Real World
Web Services in the Real WorldWeb Services in the Real World
Web Services in the Real World
 
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
Introduction to Service Oriented Architectures, SOAP/WSDL Web Services and RE...
 
Web service introduction 2
Web service introduction 2Web service introduction 2
Web service introduction 2
 
Web Services
Web ServicesWeb Services
Web Services
 
Json-based Service Oriented Architecture for the web
Json-based Service Oriented Architecture for the webJson-based Service Oriented Architecture for the web
Json-based Service Oriented Architecture for the web
 
Services web RESTful
Services web RESTfulServices web RESTful
Services web RESTful
 
SOAP vs REST
SOAP vs RESTSOAP vs REST
SOAP vs REST
 
Introduction to SNMP
Introduction to SNMPIntroduction to SNMP
Introduction to SNMP
 
SOA Unit I
SOA Unit ISOA Unit I
SOA Unit I
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 

Similar to Web service introduction (20)

Steps india technologies
Steps india technologiesSteps india technologies
Steps india technologies
 
Steps india technologies .com
Steps india technologies .comSteps india technologies .com
Steps india technologies .com
 
Web services
Web servicesWeb services
Web services
 
Web services
Web servicesWeb services
Web services
 
Ntg web services
Ntg   web servicesNtg   web services
Ntg web services
 
Web-Services!.pptx
Web-Services!.pptxWeb-Services!.pptx
Web-Services!.pptx
 
Lecture 16 - Web Services
Lecture 16 - Web ServicesLecture 16 - Web Services
Lecture 16 - Web Services
 
Developmeant and deployment of webservice
Developmeant and deployment of webserviceDevelopmeant and deployment of webservice
Developmeant and deployment of webservice
 
Introduction to SOAP
Introduction to SOAPIntroduction to SOAP
Introduction to SOAP
 
SOA and web services
SOA and web servicesSOA and web services
SOA and web services
 
Jax ws
Jax wsJax ws
Jax ws
 
Web service- Guest Lecture at National Wokshop
Web service- Guest Lecture at National WokshopWeb service- Guest Lecture at National Wokshop
Web service- Guest Lecture at National Wokshop
 
Mule soft ppt 2
Mule soft ppt  2Mule soft ppt  2
Mule soft ppt 2
 
Web services overview
Web services overviewWeb services overview
Web services overview
 
Ws rest
Ws restWs rest
Ws rest
 
jkljklj
jkljkljjkljklj
jkljklj
 
Web service architecture
Web service architectureWeb service architecture
Web service architecture
 
AK 3 web services using apache axis
AK 3   web services using apache axisAK 3   web services using apache axis
AK 3 web services using apache axis
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web Services
 
Jee course web services
Jee course web servicesJee course web services
Jee course web services
 

More from Sagara Gunathunga

Microservices Security landscape
Microservices Security landscapeMicroservices Security landscape
Microservices Security landscapeSagara Gunathunga
 
Privacy by Design as a system design strategy - EIC 2019
Privacy by Design as a system design strategy - EIC 2019 Privacy by Design as a system design strategy - EIC 2019
Privacy by Design as a system design strategy - EIC 2019 Sagara Gunathunga
 
Consumer Identity World EU - Five pillars of consumer IAM
Consumer Identity World EU - Five pillars of consumer IAM Consumer Identity World EU - Five pillars of consumer IAM
Consumer Identity World EU - Five pillars of consumer IAM Sagara Gunathunga
 
kicking your enterprise security up a notch with adaptive authentication sa...
kicking your enterprise security up a notch with adaptive authentication   sa...kicking your enterprise security up a notch with adaptive authentication   sa...
kicking your enterprise security up a notch with adaptive authentication sa...Sagara Gunathunga
 
Synergies across APIs and IAM
Synergies across APIs and IAMSynergies across APIs and IAM
Synergies across APIs and IAMSagara Gunathunga
 
GDPR impact on Consumer Identity and Access Management (CIAM)
GDPR impact on Consumer Identity and Access Management (CIAM)GDPR impact on Consumer Identity and Access Management (CIAM)
GDPR impact on Consumer Identity and Access Management (CIAM)Sagara Gunathunga
 
Introduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance CentreIntroduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance CentreSagara Gunathunga
 
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...Sagara Gunathunga
 
An Introduction to WSO2 Microservices Framework for Java
An Introduction to WSO2 Microservices Framework for JavaAn Introduction to WSO2 Microservices Framework for Java
An Introduction to WSO2 Microservices Framework for JavaSagara Gunathunga
 
Understanding Microservice Architecture WSO2Con Asia 2016
Understanding Microservice Architecture WSO2Con Asia 2016 Understanding Microservice Architecture WSO2Con Asia 2016
Understanding Microservice Architecture WSO2Con Asia 2016 Sagara Gunathunga
 
Introduction to the all new wso2 governance centre asia 16
Introduction to the all new wso2 governance centre asia 16Introduction to the all new wso2 governance centre asia 16
Introduction to the all new wso2 governance centre asia 16Sagara Gunathunga
 
Building Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case Study
Building Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case StudyBuilding Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case Study
Building Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case StudySagara Gunathunga
 
Introduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance CentreIntroduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance CentreSagara Gunathunga
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsSagara Gunathunga
 
JavaEE and RESTful development - WSO2 Colombo Meetup
JavaEE and RESTful development - WSO2 Colombo Meetup JavaEE and RESTful development - WSO2 Colombo Meetup
JavaEE and RESTful development - WSO2 Colombo Meetup Sagara Gunathunga
 
Application Monitoring with WSO2 App Server
Application Monitoring with WSO2 App ServerApplication Monitoring with WSO2 App Server
Application Monitoring with WSO2 App ServerSagara Gunathunga
 
Creating APIs with the WSO2 Platform
Creating APIs with the WSO2 PlatformCreating APIs with the WSO2 Platform
Creating APIs with the WSO2 PlatformSagara Gunathunga
 
Apache contribution-bar camp-colombo
Apache contribution-bar camp-colomboApache contribution-bar camp-colombo
Apache contribution-bar camp-colomboSagara Gunathunga
 

More from Sagara Gunathunga (20)

Microservices Security landscape
Microservices Security landscapeMicroservices Security landscape
Microservices Security landscape
 
Privacy by Design as a system design strategy - EIC 2019
Privacy by Design as a system design strategy - EIC 2019 Privacy by Design as a system design strategy - EIC 2019
Privacy by Design as a system design strategy - EIC 2019
 
Consumer Identity World EU - Five pillars of consumer IAM
Consumer Identity World EU - Five pillars of consumer IAM Consumer Identity World EU - Five pillars of consumer IAM
Consumer Identity World EU - Five pillars of consumer IAM
 
kicking your enterprise security up a notch with adaptive authentication sa...
kicking your enterprise security up a notch with adaptive authentication   sa...kicking your enterprise security up a notch with adaptive authentication   sa...
kicking your enterprise security up a notch with adaptive authentication sa...
 
Synergies across APIs and IAM
Synergies across APIs and IAMSynergies across APIs and IAM
Synergies across APIs and IAM
 
GDPR impact on Consumer Identity and Access Management (CIAM)
GDPR impact on Consumer Identity and Access Management (CIAM)GDPR impact on Consumer Identity and Access Management (CIAM)
GDPR impact on Consumer Identity and Access Management (CIAM)
 
Introduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance CentreIntroduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance Centre
 
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
 
An Introduction to WSO2 Microservices Framework for Java
An Introduction to WSO2 Microservices Framework for JavaAn Introduction to WSO2 Microservices Framework for Java
An Introduction to WSO2 Microservices Framework for Java
 
Understanding Microservice Architecture WSO2Con Asia 2016
Understanding Microservice Architecture WSO2Con Asia 2016 Understanding Microservice Architecture WSO2Con Asia 2016
Understanding Microservice Architecture WSO2Con Asia 2016
 
Introduction to the all new wso2 governance centre asia 16
Introduction to the all new wso2 governance centre asia 16Introduction to the all new wso2 governance centre asia 16
Introduction to the all new wso2 governance centre asia 16
 
Building Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case Study
Building Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case StudyBuilding Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case Study
Building Your Own Store with WSO2 Enterprise Store: The WSO2 Store Case Study
 
Introduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance CentreIntroduction to the All New WSO2 Governance Centre
Introduction to the All New WSO2 Governance Centre
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
 
JavaEE and RESTful development - WSO2 Colombo Meetup
JavaEE and RESTful development - WSO2 Colombo Meetup JavaEE and RESTful development - WSO2 Colombo Meetup
JavaEE and RESTful development - WSO2 Colombo Meetup
 
Application Monitoring with WSO2 App Server
Application Monitoring with WSO2 App ServerApplication Monitoring with WSO2 App Server
Application Monitoring with WSO2 App Server
 
WSO2 Application Server
WSO2 Application ServerWSO2 Application Server
WSO2 Application Server
 
Creating APIs with the WSO2 Platform
Creating APIs with the WSO2 PlatformCreating APIs with the WSO2 Platform
Creating APIs with the WSO2 Platform
 
WSO2 AppDev platform
WSO2 AppDev platformWSO2 AppDev platform
WSO2 AppDev platform
 
Apache contribution-bar camp-colombo
Apache contribution-bar camp-colomboApache contribution-bar camp-colombo
Apache contribution-bar camp-colombo
 

Web service introduction

  • 1. Introduction to Web Service Sagara Gunathunga ( Apache web Service and Axis committer )
  • 3. Why you need Web Services ?
  • 4. How do you interact with on-line financial service? 
  • 6. How do you interact with on-line financial service?  Bank-A Bank-B Bank-C
  • 7. How do you interact with on-line financial service?  WS -A Bank-A WS -B Bank-B WS -C Bank-C
  • 9. What are Web services? • loosely coupled: - they can be changed independently • platform independent • contracted: in and output are publicly available • components: interface encapsulates the code • XML-based interfaces: - human readable • firewall friendly •self-describing (allows for discovery of their functionality)
  • 13. Web Services Specification There are three basic specifications, forming the basis for state-of-the-art Web-Service technology
  • 14. Simple Object Access Protocol (SOAP)
  • 16. SOAP .. • SOAP originally stood for "Simple Object Access Protocol" . • Web Services expose useful functionality to Web users through a standard Web protocol called SOAP. • Soap is an XML vocabulary standard to enable programs on separate computers to interact across any network. SOAP is a simple markup language for describing messages between applications. • • Soap uses mainly HTTP as a transport protocol. That is, HTTP message contains a SOAP message as its payload section.
  • 17. SOAP .. A SOAP message is an ordinary XML document containing the following elements: • A required Envelope element that identifies the XML document as a SOAP message. • An optional Header element that contains header information. • A required Body element that contains call and response information. • An optional Fault element that provides information about errors that occurred while processing the message.
  • 18. SOAP over HTTP HTTP Headers <soap:Envelope> SOAP Envelope <soap:Header> Header XML… </soap:Header> <soap:Body> Body XML payload… Message Pay Load </soap:Body> </soap:Envelope>
  • 19. Example - SOAP Request POST /InStock HTTP/1.1 Host: www.stock.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 150 <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle=http://www.w3.org/2001/12/soap-encoding”> <soap:Body xmlns:m="http://www.stock.org/stock">     <m:GetStockPrice> <m:StockName>IBM</m:StockName>      </m:GetStockPrice> </soap:Body> </soap:Envelope>
  • 20. SOAP Response HTTP/1.1 200 OK Content-Type: application/soap; charset=utf-8 Content-Length: 126 <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap- envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap- encoding"> <soap:Body xmlns:m="http://www.stock.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope>
  • 21. Web Services Description Language (WSDL) » WSDL stands for Web Services Description Language. » WSDL is an XML vocabulary for describing Web » services. It allows developers to describe Web Services and their capabilities, in a standard manner. » WSDL specifies what a request message must contain and what the response message will look like in unambiguous notation. In other words, it is a contract between the XML Web service and the client who wishes to use this service. » In addition to describing message contents, WSDL defines where the service is available and what communications protocol is used to talk to the service.
  • 22. WSDL Structure » portType • Abstract definition of a service (set of operations) Service » Multiple bindings per portType: • How to access it Port Port (e.g. http://host/svc) • SOAP, JMS, direct call Binding Binding (e.g. SOAP) » Ports • Where to access it portType operation(s) inMesage outMessage Abstract interface
  • 23. The WSDL Document Structure » A WSDL document is just a simple XML document. » It defines a web service using these major elements: • port type - The operations performed by the web service. • message - The messages used by the web service. • types - The data types used by the web service. • binding - The communication protocols used by the web service.
  • 24. Example WSDL <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions> <wsdl:message name="execLocalCommandResponse"> <wsdl:message name="execLocalCommandRequest"> <wsdl:portType name="SJwsImp"> <wsdl:operation name="execLocalCommand" parameterOrder="in0"> <wsdl:input message="impl:execLocalCommandRequest" name="execLocalCommandRequest"/> <wsdl:output message="impl:execLocalCommandResponse" name="execLocalCommandResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="SubmitjobSoapBinding" type="impl:SJwsImp"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="execLocalCommand"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="execLocalCommandRequest"> <wsdl:output name="execLocalCommandResponse"> </wsdl:operation> </wsdl:binding> <wsdl:service name="SJwsImpService"> <wsdl:port binding="impl:SubmitjobSoapBinding" name="Submitjob"> </wsdl:service> </wsdl:definitions>
  • 25. Example: WSDL types for Custom Data Definition <wsdl:types> <schema targetNamespace="http://.../GCWS/services/Submitjob" xmlns:impl="http://.../GCWS/services/Submitjob" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="ArrayOf_xsd_string"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]" /> </restriction> </complexContent> </complexType> <element name="ArrayOf_xsd_string" nillable="true" type="impl:ArrayOf_xsd_string" /> </schema> </wsdl:types>
  • 26. Example - message <wsdl:message name="execLocalCommandResponse">   <wsdl:part name="execLocalCommandReturn" type="impl:ArrayOf_xsd_string" /> </wsdl:message> <wsdl:message name="execLocalCommandRequest">   <wsdl:part name="in0" type="xsd:string" /> </wsdl:message>
  • 27. WSDL - portTypes » portType elements map messages to operations. » You can think of portType==class, operation==class methods. » Operations can contain input, output, and/or fault bindings for messages. » An operation may support of the following message styles: • One-way: request only • Two-way: request/response • Solicit-response: server “push” and client response • Notification: one-way server push
  • 28. <wsdl:portType name="SJwsImp"> <wsdl:operation name="execLocalCommand" parameterOrder="in0"> <wsdl:input message="impl:execLocalCommandRequest" name="execLocalCommandRequest" />  <wsdl:output message="impl:execLocalCommandResponse" name="execLocalCommandResponse" /> </wsdl:operation> </wsdl:portType>
  • 29. Service and Port Definitions » So far, we have defined the class method interfaces (portTypes) and the rules for binding to a particular protocol. » Port elements define how the bindings (and thus the portTypes) are associated with a particular server. » The service element collects ports.
  • 30. <wsdl:service name="SJwsImpService"> <wsdl:port binding="impl:SubmitjobSoapBinding" name="Submitjob">   <wsdlsoap:address location="http://.../GCWS/services/Submitjob" />   </wsdl:port> </wsdl:service>
  • 31. PortType Bindings » portTypes are abstract interface definitions. • Don’t say anything about how to invoke a remote method. » Remote invocations are defined in binding elements. » Binding elements are really just place holders that are extended for specific protocols • WSDL spec provides SOAP, HTTP GET/POST, and MIME extension schema examples.
  • 32. <wsdl:binding name="SubmitjobSoapBinding" type="impl:SJwsImp"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="execLocalCommand“>   <wsdlsoap:operation soapAction="" /> <wsdl:input name="execLocalCommandRequest">   <wsdlsoap:body encodingStyle=http://schemas.xmlsoap.org/soap/encoding/ namespace="http://.../GCWS/services/Submitjob" use="encoded" />   </wsdl:input> <wsdl:output name="execLocalCommandResponse">   <wsdlsoap:body encodingStyle=http://schemas.xmlsoap.org/soap/encoding/ namespace=http://.../GCWS/services/Submitjob use="encoded" />   </wsdl:output>     </wsdl:operation>   </wsdl:binding>
  • 34. Contract first WS development 1. Start with existing WSDL document or writing a new WSDL document, all of the web service frameworks support for contact first web service development. 2. Both Apache Axis2 and CXF provide ‘WSDL2Java” tool , that capable to generate source codes from WSDL contract. Spring -WS doesn't provide any code generation tool but supports for Contact first approach .
  • 35. Contract first WS development with Axis2 1. Use existing WSDL or write a simple WSDL using a XML editor or Eclipse WSDL editor. 2. Generate java skeleton using “WSDL2JAVA” tool. 3. Complete server side methods . 4. Package as .AAR ( with the generated service.xml ) 5. Deploy in to “services” directory of Axis2 installation.
  • 36. Code first WS development 1. Start with existing codes , most of the time people use this approach when they want to expose existing business features as a web service. 2. Most of the Web service framework supports for automatic WSDL generation from services. ( Axis2 , CXF) 3. Users can utilize this automatic code generation feature or they can disable this feature to assign existing WSDL file.
  • 37. Code first WS development with Axis2 Optionally you can write a interface too, specially with Spring, Hibernate and AOP related services. Service .xml - is a Axis2 specific service description file that contains important meta data about the service such as service class , service interface , message receivers etc.
  • 38. WS client development with Axis2 Once you have a service description for a service you can generate WS client code using a tools like “WSDL2JAVA” , the generated code contain the required logic to serialize messages, service location , QoS attributes etc.
  • 39. References • This slide and source codes for samples. •http://people.apache.org/~sagara/ws/intro10 •http://ws.apache.org/axis2/ •http://wso2.org/library/95 •http://www.developer.com/services/article.php/3613896/Writing-an • http://wso2.org/library/2873
  • 40. Thank You Aeturnum Lanka (Pvt) Ltd 1 9 7 , S ta n le y T h ila k a r a tn a M w , N u g e g o d a 1 0 2 5 0 , S r i Lanka Phone: + 9 4 1 1 5 5 1 8 1 7 7 | Email: in fo @ a e tu r n u m .c o m