SlideShare a Scribd company logo
Topic 4

  Java API for XML Web Services



Assoc.Prof. Dr. Thanachart Numnonda
       www.imcinstitute.com
            August 2010
Agenda
 Java APIs   for Web Services
 JAX-RPC

 JAX-WS




                                 2
Java APIs for Web Services




                             3
JWSDP
   Java Web Services Development Pack (JWSDP) is a free
    software development kit (SDK) for developing Web
    Services
   JWSDP has been replaced by GlassFish and WSIT and
    several components are in Java SE 6.
   JWSDP APIs
          Java API for XML Processing (JAXP), v 1.3
          Java Architecture for XML Binding (JAXB), v 1.0 and 2.0
          JAX-RPC v 1.1
          JAX-WS v 2.0
          SAAJ (SOAP with Attachments API for Java)
          Java API for XML Registries (JAXR)
                                                                     4
Java API for XML Processing (JAXP)
• JAXP enables applications to parse, validate and
  transform XML documents.
• Java developers can invoke
   • SAX parser
   • DOM parser
• The main JAXP APIs are defined in the
  javax.xml.parsers package
   • SAXParserFactory
   • DocumentBuilderFactory



                                                     5
Java API for XML Binding (JAXB)
• JAXB allows Java developers to access and process XML data
  without having to know XML or XML processing.
• JAXB is a Java technology that enables you to generate Java
  classes from XML schemas by means of a JAXB binding
  compiler.
• unmarshalling
   • XML instance documents into Java content trees
• marshalling
   • Java content trees back into XML instance documents.

                                                                6
SAAJ (SOAP with Attachments
         API for Java™)
• SAAJ provides a convenient API for constructing
and sending SOAP messages without having to
directly create the XML yourself.
• SAAJ was originally part of the Java API
for XML Messaging (JAXM) Separated out from
 JAXM 1.0 into JAXM 1.1 and SAAJ 1.1
 (SAAJ 1.3 (Java EE 5))
                                                    7
JAXR
• Standard Java API for performing registry operations
  over diverse set of registries
     Web service publication & discovery

• A unified information model for describing business
  registry content
• Provides multi-layered API abstractions
     Level 0: for UDDI
     Level 1: for ebXML registry/repository
                                                         8
JAX-RPC

• XML data types to/from Java types mapping
• SOAP Message Handler framework
• WSDL to/from Java mapping
• Servlet-based Web service endpoint model
• JAX-RPC Client Programming Models
• Extensible type mapping

                                              9
JAX-WS (JAX-RPC 2.0)
•   New handler framework
•   Metadata-based Web services
•   Operational style improvement
•   Asynchronous Web services
•   Support for non-HTTP transport
•   Interoperable attachments (as part of WS-I)
•   Secure Web services (as part of Security)


                                                  10
JAXM

• JAXM is not part of Java EE 5
• JAXM-based asynchronous messaging on Java EE 5
  is supported via
     Message-driven Bean (MDB) in EJB 3 can receive
    both JMS and JAXM message types
     Connector 1.5 allows pluggability of various types
    message providers (JAXM provider and JMS
    provider)

                                                          11
Java APIs for Web Services Protocols
   SOAP
       JAXM 1.0 (JSR 67), SAAJ
       JAX-RPC => JAX-WS 2.0 (JSR 224)
   WSDL
       JAX-RPC => JAX-WS 2.0 (JSR 224)
   UDDI
       JAXR 1.0 (JSR 93)




                                          12
Sun’s Web Services Stack




                           13
JAX-RPC




          14
Remote Procedure Call (RPC)
                             Request

                            Response
        Client System                          Server System

   RPC, COM, CORBA, RMI:
    
        Synchronous communication: calling process blocks until
        there is a response
    
        More tightly coupled (than non-RPC model): client must
        find recipients and know method and its arguments
    
        Non persistent
Remote Procedure Calls

Client       Interface                  Interface         Servant

               Stub                     Skeleton



             Run Time      Protocol     Run Time

         
           Common Interface between client and Server
         
           Stub for client, Skeleton/Tie for server
         
           On-the-wire protocol needs to be agreed upon
RPC Example – Java RMI
                     <<Interface>>
                     Java Remote
                       Interface


                     rmic compiler

  Client                               Remote Object
                                       Implementation



RMI Client                               RMI Server
  Stub                                    Skeleton

           Java Remote Method Protocol (JRMP) is
                   On-the-wire protocol
RPC Example - JAX-RPC
Common Interface
   Service is described in IDL (Interface Description
    Language)
      IDL ofCORBA service
      Java RMI interface in RMI (Language specific)
      WSDL for Web service

   Used by tools to statically or dynamically generate
    and/or configure interfaces, proxies, and ties in a
    network technology specific environment
What is JAX-RPC?
   Java™ API for XML-based RPC
       Web Services operations are performed by exchanging
        SOAP 1.1 messages
   Services are described using WSDL
    •   WSDL is the contract between service provider and
        client (only contract needed)
   Web service endpoints and clients use JAX-RPC
    programming model
   Key technology for Web Services in the J2EE 1.4
    platform
JAX-RPC Design Goals
   Easy to use programming model
    •   For both defining & using a service
   Hides all the plumbing
    •   You don't have to create SOAP messages yourself
   SOAP and WSDL-based interoperability
    •   Interoperate with any SOAP 1.1 compliant peers
   Extensibility and Modularity
    •   Support new versions of XML specification, i.e. SOAP 1.2
        and beyond
    •   Message handler architecture
JAX-RPC Architecture
    JAX-RPC                                             JAX-RPC
      Client                WSDL Document            Service Endpoint
 Generated        JavaWSDL             WSDLJava
   Code

Container                                                   Container


      Client-side JAX-RPC                   Server-side JAX-RPC
        Runtime System                        Runtime System


                                SOAP

                                HTTP
JAX-RPC Runtime System
   Core of a JAX-RPC implementation:
    • Library that provides runtime services
      for JAX-RPC mechanisms
    • Implements some of the JAX-RPC APIs
   Client side:
    • Can be implemented over J2SE™, J2EE™ or J2ME™
      platforms
   Server-side:
    • J2EE 1.3 or 1.4 Containers: EJB™ or Servlet
Developing a Web Service
       Interfaces (java.rmi.Remote type)
       Must follow JAX-RPC conventions


       Implementation classes
       Servlet-based endpoint model
       Optional handler and serializer classes

tool
               WSDL      Service contract

       Packaged application (war file)
JAX-RPC : Web Service Endpoint
                                  JAX-RPC
                               Service Endpoint
          WSDL<-->Java


  WSDL Document           Container


                         Server-Side
                          JAX-RPC
                           Runtime
                           System
             SOAP

             HTTP
JAX-WS




         26
Quick overview of JAX-WS
   Easy way to use Java API for XML Web Services
       Replace JAX-RPC
   Just add @annotation to POJO
       XML Descriptor free programming
 Layer architecture
 SOAP 1.2 (Document/Literal)
 Use JAXB for data binding
 Protocol and transport independence
 Part of Java SE6 and Java EE 5 Platform
                                                    27
JAX-WS Layered Architecture




                              28
What Does It Mean?
• Upper layer uses annotations extensively
     • Easy to use
     • Great toolability
     • Fewer generated classes
• Lower layer is more traditional
     • API-based
     • For advanced scenarios
• Most application will use the upper layer only
• Either way, portability is guaranteed

                                                   29
Two ways to create a Web Service
• Starting from a WSDL file
  > Generate classes using wsimport (=> xjc)
    > WS interface
    > WS implementation skeleton class
  > Implement WS interface
  > Build and deploy
• Starting from a Java class (POJO)
  > Annotate POJO
  > Build and deploy
    > WSDL file generated automatically

                                               30
Start with a Java Class




                          31
Server-Side Programming Model: POJO

1    Write a POJO implementing the service
2    Add @WebService annotation to it
3    Build and Deploy the application
    WSDL is automatically generated at runtime
1    Point your clients at the WSDL
    e.g. http://myserver/myapp/MyService?WSDL




                                                 32
Example 1: Servlet-Based Endpoint
@WebService
public class Calculator {
    public int add( int a, int b) {
        return a + b;
    }
}



• @WebService annotation
  • All public methods become web service operations
• WSDL/Schema generated automatically
  • Default values are used
                                                       33
Service Description Default Mapping
• Java mapping => WSDL




                                       34
Example 2: EJB-Based Endpoint
@WebService
@Stateless
public class Calculator {
    public int add( int a, int b) {
        return a + b;
    }
}



• It’s a regular EJB 3.0 component, so it can use any
  EJB features
   > Transactions, security, interceptors...

                                                        35
Customizing through Annotations
@WebService(name=”CreditRatingService”,
            targetNamespace=”http://example.org”)
public class CreditRating {

     @WebMethod(operationName=”getCreditScore”)
     public Score getCredit(
         @WebParam(name=”customer”)
         Customer c) {
         // ... implementation code ...
    }
}




                                                    36
Start with a WSDL file




                         37
Generating an interface from WSDL
• WSDL => Java generation




                                      38
Implementing a Web Service from
     a Generated Interface




                                  39
Server Side Web Service




                          40
JAX-WS uses JAXB for Data Binding




                                    41
add() Parameter : Example




                            42
JAXB XML Schema to Java Mapping




                                  43
Client Side Programming




                          44
Java SE Client Side Programming

•   Point a tool (NetBeans or wsimport) at the WSDL
    for the service
       wsimport http://example.org/Calculator.wsdl
•    Generate annotated classes and interfaces
•    Call new on the service class
•    Get a proxy using a get<ServiceName>Port method
•    Invoke any remote operations


                                                       45
Example : Java SE-Based Client

CalculatorService svc = new CalculatorService();
Calculator proxy = svc.getCalculatorPort();
int answer = proxy.add(35, 7);




• No need to use factories
• The code is fully portable
• XML is completely hidden from programmer



                                                   46
Java EE Client Side Programming

•   Point a tool (NetBeans or wsimport) at the WSDL
    for the service
    wsimport http://example.org/calculator.wsdl
•   Generate annotated classes and interfaces
•   Inject a @WebServiceReference of the
    appropriate type
•   No JNDI needed
•   Invoke any remote operations
                                                      47
Example : Java EE-Based Client

@Stateless
public class MyBean {
   // Resource injection
   @WebServiceRef(CalculatorService.class)
   Calculator proxy;

    public int mymethod() {
       return proxy.add(35, 7);
}




                                             48
Client Side




              49
Annotations Used in JAX-WS
• JSR 181: Web Services Metadata for the
  Java Platform
• JSR 222: Java Architecture for XML
  Binding (JAXB)
• JSR 224: Java API for XML Web Services
  (JAX-WS)
• JSR 250: Common Annotations for the
  Java Platform
@WebService
• Marks a Java class as implementing a
  Web Service, or a Java interface as
  defining a Web Service interface.
• Attributes
  > endpointInterface
  > name
  > portName
  > serviceName
  > targetNamespace
  > wsdlLocation
@WebMethod
• Customizes a method that is exposed as
  a Web Service operation
• The method is not required to throw
  java.rmi.RemoteException.
• Attributes
 > action
 > exclude
 > operationName
@WebParam
• Customizes the mapping of an individual
  parameter to a Web Service message
  part and XML element.
• Attributes
  > header
  > mode
  > name
  > partName
  > targetNamespace
@WebResult
• Customizes the mapping of the return
  value to a WSDL part and XML element.
• Attributes
 >   header
 >   name
 >   partName
 >   targetNamespace
JAX-WS - Provider
• Web Service endpoints may choose to work at
  the XML message level by implementing the
  Provider interface.
• The endpoint accesses the message or
  message payload using this low-level, generic
  API
• Implement one of the following
  > Provider<Source>
  > Provider<SOAPMessage>
  > Provider<DataSource>
JAX-WS - Provider
JAX-WS - Dispatch
• Web service client applications may choose to
  work at the XML message level by using the
  Dispatch<T> APIs.
• The javax.xml.ws.Dispatch<T> interface
  provides support for the dynamic invocation of
  service endpoint operations.
• Similar to Provider on server side
JAX-WS - Dispatch
Resources
 Some contents are borrowed from the presentation
  slides of Sang Shin, Java™ Technology Evangelist,
  Sun Microsystems, Inc.
 Web Services and Java, Elsa Estevez, Tomasz
  Janowski and Gabriel Oteniya, UNU-IIST, Macau




                                                      59
Thank you

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



                                60

More Related Content

What's hot (20)

PPTX
Ppt full stack developer
SudhirVarpe1
 
PPTX
Javascript operators
Mohit Rana
 
PPTX
Apache tomcat
Shashwat Shriparv
 
PDF
Expressjs
Yauheni Nikanovich
 
PDF
Desarrolla tu primera api con spring boot
CloudAppi
 
PPT
Web Services
chidi
 
PPT
Introduction to HTML5
IT Geeks
 
PPTX
Laravel Tutorial PPT
Piyush Aggarwal
 
PPT
Web server
Sajan Sahu
 
PDF
Web develop in flask
Jim Yeh
 
PPTX
HTTP request and response
Sahil Agarwal
 
PPTX
Salesforce 101
501Partners
 
PDF
1. web technology basics
Jyoti Yadav
 
PPTX
Web Development
Harshdeep Singh
 
PPTX
Express js
Manav Prasad
 
PPTX
HTML and DHTML
Dr. SURBHI SAROHA
 
PPTX
Html, CSS & Web Designing
Leslie Steele
 
ODP
Dependency Injection in Spring in 10min
Corneil du Plessis
 
PDF
Spring Boot
HongSeong Jeon
 
Ppt full stack developer
SudhirVarpe1
 
Javascript operators
Mohit Rana
 
Apache tomcat
Shashwat Shriparv
 
Desarrolla tu primera api con spring boot
CloudAppi
 
Web Services
chidi
 
Introduction to HTML5
IT Geeks
 
Laravel Tutorial PPT
Piyush Aggarwal
 
Web server
Sajan Sahu
 
Web develop in flask
Jim Yeh
 
HTTP request and response
Sahil Agarwal
 
Salesforce 101
501Partners
 
1. web technology basics
Jyoti Yadav
 
Web Development
Harshdeep Singh
 
Express js
Manav Prasad
 
HTML and DHTML
Dr. SURBHI SAROHA
 
Html, CSS & Web Designing
Leslie Steele
 
Dependency Injection in Spring in 10min
Corneil du Plessis
 
Spring Boot
HongSeong Jeon
 

Viewers also liked (20)

PDF
Java Web Services
Jussi Pohjolainen
 
PPTX
XML, DTD & XSD Overview
Pradeep Rapolu
 
PDF
Scalable JavaScript Application Architecture
Nicholas Zakas
 
PDF
Javascript Best Practices
Christian Heilmann
 
PDF
Java Web Services [3/5]: WSDL, WADL and UDDI
IMC Institute
 
PPT
Hacking Web 2.0 - Defending Ajax and Web Services [HITB 2007 Dubai]
Shreeraj Shah
 
PDF
Java web services using JAX-WS
IndicThreads
 
PPTX
Writing simple web services in java using eclipse editor
Santosh Kumar Kar
 
PDF
Restful Web Services
Angelin R
 
PDF
Web Services Tutorial
Lorna Mitchell
 
PDF
Web Services (SOAP, WSDL, UDDI)
Peter R. Egli
 
PDF
Web Services PHP Tutorial
Lorna Mitchell
 
PPTX
Testing web services
Taras Lytvyn
 
PPTX
Spring database - part2
Santosh Kumar Kar
 
PPTX
Springs
Santosh Kumar Kar
 
PPT
Java Web Service - Summer 2004
Danny Teng
 
PDF
Jaxp Xmltutorial 11 200108
nit Allahabad
 
PPT
Simple API for XML
guest2556de
 
PPTX
Spring transaction part4
Santosh Kumar Kar
 
Java Web Services
Jussi Pohjolainen
 
XML, DTD & XSD Overview
Pradeep Rapolu
 
Scalable JavaScript Application Architecture
Nicholas Zakas
 
Javascript Best Practices
Christian Heilmann
 
Java Web Services [3/5]: WSDL, WADL and UDDI
IMC Institute
 
Hacking Web 2.0 - Defending Ajax and Web Services [HITB 2007 Dubai]
Shreeraj Shah
 
Java web services using JAX-WS
IndicThreads
 
Writing simple web services in java using eclipse editor
Santosh Kumar Kar
 
Restful Web Services
Angelin R
 
Web Services Tutorial
Lorna Mitchell
 
Web Services (SOAP, WSDL, UDDI)
Peter R. Egli
 
Web Services PHP Tutorial
Lorna Mitchell
 
Testing web services
Taras Lytvyn
 
Spring database - part2
Santosh Kumar Kar
 
Java Web Service - Summer 2004
Danny Teng
 
Jaxp Xmltutorial 11 200108
nit Allahabad
 
Simple API for XML
guest2556de
 
Spring transaction part4
Santosh Kumar Kar
 
Ad

Similar to Java Web Services [4/5]: Java API for XML Web Services (20)

PPT
15376199.ppt
abdulbasetalselwi
 
PPTX
Jax ws
F K
 
PPTX
Ntg web services
Farag Zakaria
 
PPTX
Java Web services
Sujit Kumar
 
PDF
Rest web service
Hamid Ghorbani
 
PPT
java-webservices introduction ppt for beginners
VasantPrasad
 
PPTX
Java Web services
vpulec
 
PPS
Deawsj 7 ppt-2_a
Niit Care
 
PPT
ghfghg
hoefo
 
DOC
Web services soap rest training
FuturePoint Technologies
 
DOCX
Web services in java
maabujji
 
PPT
jkljklj
hoefo
 
DOCX
Web services Concepts
pasam suresh
 
PDF
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
PDF
Web Services Training in Noida
Tech Mentro
 
PPT
Reusing Existing Java EE Applications from SOA Suite 11g
Guido Schmutz
 
PPTX
Web services
smitha273566
 
PDF
JAX-RS Creating RESTFul services
Ludovic Champenois
 
PPTX
Soap and restful webservice
Dong Ngoc
 
PDF
Java EE 6 workshop at Dallas Tech Fest 2011
Arun Gupta
 
15376199.ppt
abdulbasetalselwi
 
Jax ws
F K
 
Ntg web services
Farag Zakaria
 
Java Web services
Sujit Kumar
 
Rest web service
Hamid Ghorbani
 
java-webservices introduction ppt for beginners
VasantPrasad
 
Java Web services
vpulec
 
Deawsj 7 ppt-2_a
Niit Care
 
ghfghg
hoefo
 
Web services soap rest training
FuturePoint Technologies
 
Web services in java
maabujji
 
jkljklj
hoefo
 
Web services Concepts
pasam suresh
 
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
Web Services Training in Noida
Tech Mentro
 
Reusing Existing Java EE Applications from SOA Suite 11g
Guido Schmutz
 
Web services
smitha273566
 
JAX-RS Creating RESTFul services
Ludovic Champenois
 
Soap and restful webservice
Dong Ngoc
 
Java EE 6 workshop at Dallas Tech Fest 2011
Arun Gupta
 
Ad

More from IMC Institute (20)

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

Recently uploaded (20)

PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 

Java Web Services [4/5]: Java API for XML Web Services

  • 1. Topic 4 Java API for XML Web Services Assoc.Prof. Dr. Thanachart Numnonda www.imcinstitute.com August 2010
  • 2. Agenda  Java APIs for Web Services  JAX-RPC  JAX-WS 2
  • 3. Java APIs for Web Services 3
  • 4. JWSDP  Java Web Services Development Pack (JWSDP) is a free software development kit (SDK) for developing Web Services  JWSDP has been replaced by GlassFish and WSIT and several components are in Java SE 6.  JWSDP APIs  Java API for XML Processing (JAXP), v 1.3  Java Architecture for XML Binding (JAXB), v 1.0 and 2.0  JAX-RPC v 1.1  JAX-WS v 2.0  SAAJ (SOAP with Attachments API for Java)  Java API for XML Registries (JAXR) 4
  • 5. Java API for XML Processing (JAXP) • JAXP enables applications to parse, validate and transform XML documents. • Java developers can invoke • SAX parser • DOM parser • The main JAXP APIs are defined in the javax.xml.parsers package • SAXParserFactory • DocumentBuilderFactory 5
  • 6. Java API for XML Binding (JAXB) • JAXB allows Java developers to access and process XML data without having to know XML or XML processing. • JAXB is a Java technology that enables you to generate Java classes from XML schemas by means of a JAXB binding compiler. • unmarshalling • XML instance documents into Java content trees • marshalling • Java content trees back into XML instance documents. 6
  • 7. SAAJ (SOAP with Attachments API for Java™) • SAAJ provides a convenient API for constructing and sending SOAP messages without having to directly create the XML yourself. • SAAJ was originally part of the Java API for XML Messaging (JAXM) Separated out from JAXM 1.0 into JAXM 1.1 and SAAJ 1.1 (SAAJ 1.3 (Java EE 5)) 7
  • 8. JAXR • Standard Java API for performing registry operations over diverse set of registries Web service publication & discovery • A unified information model for describing business registry content • Provides multi-layered API abstractions Level 0: for UDDI Level 1: for ebXML registry/repository 8
  • 9. JAX-RPC • XML data types to/from Java types mapping • SOAP Message Handler framework • WSDL to/from Java mapping • Servlet-based Web service endpoint model • JAX-RPC Client Programming Models • Extensible type mapping 9
  • 10. JAX-WS (JAX-RPC 2.0) • New handler framework • Metadata-based Web services • Operational style improvement • Asynchronous Web services • Support for non-HTTP transport • Interoperable attachments (as part of WS-I) • Secure Web services (as part of Security) 10
  • 11. JAXM • JAXM is not part of Java EE 5 • JAXM-based asynchronous messaging on Java EE 5 is supported via Message-driven Bean (MDB) in EJB 3 can receive both JMS and JAXM message types Connector 1.5 allows pluggability of various types message providers (JAXM provider and JMS provider) 11
  • 12. Java APIs for Web Services Protocols  SOAP  JAXM 1.0 (JSR 67), SAAJ  JAX-RPC => JAX-WS 2.0 (JSR 224)  WSDL  JAX-RPC => JAX-WS 2.0 (JSR 224)  UDDI  JAXR 1.0 (JSR 93) 12
  • 14. JAX-RPC 14
  • 15. Remote Procedure Call (RPC) Request Response Client System Server System  RPC, COM, CORBA, RMI:  Synchronous communication: calling process blocks until there is a response  More tightly coupled (than non-RPC model): client must find recipients and know method and its arguments  Non persistent
  • 16. Remote Procedure Calls Client Interface Interface Servant Stub Skeleton Run Time Protocol Run Time  Common Interface between client and Server  Stub for client, Skeleton/Tie for server  On-the-wire protocol needs to be agreed upon
  • 17. RPC Example – Java RMI <<Interface>> Java Remote Interface rmic compiler Client Remote Object Implementation RMI Client RMI Server Stub Skeleton Java Remote Method Protocol (JRMP) is On-the-wire protocol
  • 18. RPC Example - JAX-RPC
  • 19. Common Interface  Service is described in IDL (Interface Description Language)  IDL ofCORBA service  Java RMI interface in RMI (Language specific)  WSDL for Web service  Used by tools to statically or dynamically generate and/or configure interfaces, proxies, and ties in a network technology specific environment
  • 20. What is JAX-RPC?  Java™ API for XML-based RPC  Web Services operations are performed by exchanging SOAP 1.1 messages  Services are described using WSDL • WSDL is the contract between service provider and client (only contract needed)  Web service endpoints and clients use JAX-RPC programming model  Key technology for Web Services in the J2EE 1.4 platform
  • 21. JAX-RPC Design Goals  Easy to use programming model • For both defining & using a service  Hides all the plumbing • You don't have to create SOAP messages yourself  SOAP and WSDL-based interoperability • Interoperate with any SOAP 1.1 compliant peers  Extensibility and Modularity • Support new versions of XML specification, i.e. SOAP 1.2 and beyond • Message handler architecture
  • 22. JAX-RPC Architecture JAX-RPC JAX-RPC Client WSDL Document Service Endpoint Generated JavaWSDL WSDLJava Code Container Container Client-side JAX-RPC Server-side JAX-RPC Runtime System Runtime System SOAP HTTP
  • 23. JAX-RPC Runtime System  Core of a JAX-RPC implementation: • Library that provides runtime services for JAX-RPC mechanisms • Implements some of the JAX-RPC APIs  Client side: • Can be implemented over J2SE™, J2EE™ or J2ME™ platforms  Server-side: • J2EE 1.3 or 1.4 Containers: EJB™ or Servlet
  • 24. Developing a Web Service Interfaces (java.rmi.Remote type) Must follow JAX-RPC conventions Implementation classes Servlet-based endpoint model Optional handler and serializer classes tool WSDL Service contract Packaged application (war file)
  • 25. JAX-RPC : Web Service Endpoint JAX-RPC Service Endpoint WSDL<-->Java WSDL Document Container Server-Side JAX-RPC Runtime System SOAP HTTP
  • 26. JAX-WS 26
  • 27. Quick overview of JAX-WS  Easy way to use Java API for XML Web Services  Replace JAX-RPC  Just add @annotation to POJO  XML Descriptor free programming  Layer architecture  SOAP 1.2 (Document/Literal)  Use JAXB for data binding  Protocol and transport independence  Part of Java SE6 and Java EE 5 Platform 27
  • 29. What Does It Mean? • Upper layer uses annotations extensively • Easy to use • Great toolability • Fewer generated classes • Lower layer is more traditional • API-based • For advanced scenarios • Most application will use the upper layer only • Either way, portability is guaranteed 29
  • 30. Two ways to create a Web Service • Starting from a WSDL file > Generate classes using wsimport (=> xjc) > WS interface > WS implementation skeleton class > Implement WS interface > Build and deploy • Starting from a Java class (POJO) > Annotate POJO > Build and deploy > WSDL file generated automatically 30
  • 31. Start with a Java Class 31
  • 32. Server-Side Programming Model: POJO 1 Write a POJO implementing the service 2 Add @WebService annotation to it 3 Build and Deploy the application WSDL is automatically generated at runtime 1 Point your clients at the WSDL e.g. http://myserver/myapp/MyService?WSDL 32
  • 33. Example 1: Servlet-Based Endpoint @WebService public class Calculator { public int add( int a, int b) { return a + b; } } • @WebService annotation • All public methods become web service operations • WSDL/Schema generated automatically • Default values are used 33
  • 34. Service Description Default Mapping • Java mapping => WSDL 34
  • 35. Example 2: EJB-Based Endpoint @WebService @Stateless public class Calculator { public int add( int a, int b) { return a + b; } } • It’s a regular EJB 3.0 component, so it can use any EJB features > Transactions, security, interceptors... 35
  • 36. Customizing through Annotations @WebService(name=”CreditRatingService”, targetNamespace=”http://example.org”) public class CreditRating { @WebMethod(operationName=”getCreditScore”) public Score getCredit( @WebParam(name=”customer”) Customer c) { // ... implementation code ... } } 36
  • 37. Start with a WSDL file 37
  • 38. Generating an interface from WSDL • WSDL => Java generation 38
  • 39. Implementing a Web Service from a Generated Interface 39
  • 40. Server Side Web Service 40
  • 41. JAX-WS uses JAXB for Data Binding 41
  • 42. add() Parameter : Example 42
  • 43. JAXB XML Schema to Java Mapping 43
  • 45. Java SE Client Side Programming • Point a tool (NetBeans or wsimport) at the WSDL for the service wsimport http://example.org/Calculator.wsdl • Generate annotated classes and interfaces • Call new on the service class • Get a proxy using a get<ServiceName>Port method • Invoke any remote operations 45
  • 46. Example : Java SE-Based Client CalculatorService svc = new CalculatorService(); Calculator proxy = svc.getCalculatorPort(); int answer = proxy.add(35, 7); • No need to use factories • The code is fully portable • XML is completely hidden from programmer 46
  • 47. Java EE Client Side Programming • Point a tool (NetBeans or wsimport) at the WSDL for the service wsimport http://example.org/calculator.wsdl • Generate annotated classes and interfaces • Inject a @WebServiceReference of the appropriate type • No JNDI needed • Invoke any remote operations 47
  • 48. Example : Java EE-Based Client @Stateless public class MyBean { // Resource injection @WebServiceRef(CalculatorService.class) Calculator proxy; public int mymethod() { return proxy.add(35, 7); } 48
  • 50. Annotations Used in JAX-WS • JSR 181: Web Services Metadata for the Java Platform • JSR 222: Java Architecture for XML Binding (JAXB) • JSR 224: Java API for XML Web Services (JAX-WS) • JSR 250: Common Annotations for the Java Platform
  • 51. @WebService • Marks a Java class as implementing a Web Service, or a Java interface as defining a Web Service interface. • Attributes > endpointInterface > name > portName > serviceName > targetNamespace > wsdlLocation
  • 52. @WebMethod • Customizes a method that is exposed as a Web Service operation • The method is not required to throw java.rmi.RemoteException. • Attributes > action > exclude > operationName
  • 53. @WebParam • Customizes the mapping of an individual parameter to a Web Service message part and XML element. • Attributes > header > mode > name > partName > targetNamespace
  • 54. @WebResult • Customizes the mapping of the return value to a WSDL part and XML element. • Attributes > header > name > partName > targetNamespace
  • 55. JAX-WS - Provider • Web Service endpoints may choose to work at the XML message level by implementing the Provider interface. • The endpoint accesses the message or message payload using this low-level, generic API • Implement one of the following > Provider<Source> > Provider<SOAPMessage> > Provider<DataSource>
  • 57. JAX-WS - Dispatch • Web service client applications may choose to work at the XML message level by using the Dispatch<T> APIs. • The javax.xml.ws.Dispatch<T> interface provides support for the dynamic invocation of service endpoint operations. • Similar to Provider on server side
  • 59. Resources  Some contents are borrowed from the presentation slides of Sang Shin, Java™ Technology Evangelist, Sun Microsystems, Inc.  Web Services and Java, Elsa Estevez, Tomasz Janowski and Gabriel Oteniya, UNU-IIST, Macau 59
  • 60. Thank you [email protected] www.facebook.com/imcinstitute www.imcinstitute.com 60