This document provides an overview of Java APIs for XML web services, including JAX-RPC and JAX-WS. It discusses the Java Web Services Development Pack (JWSDP) and its components like JAXP, JAXB, SAAJ. It then describes specific APIs like JAX-RPC, JAX-WS, JAXR. It also discusses the server-side and client-side programming models in JAX-WS including using annotations and generating code from WSDL.
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
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
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 JavaWSDL WSDLJava
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
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
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
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
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
thananum@gmail.com
www.facebook.com/imcinstitute
www.imcinstitute.com
60