Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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


Published on

Presentations for Java Web Services Course, September 2010

Published in: Technology

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

  1. 1. Topic 4 Java API for XML Web ServicesAssoc.Prof. Dr. Thanachart Numnonda August 2010
  2. 2. Agenda Java APIs for Web Services JAX-RPC JAX-WS 2
  3. 3. Java APIs for Web Services 3
  4. 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. 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. 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. 7. SAAJ (SOAP with Attachments API for Java™)• SAAJ provides a convenient API for constructingand sending SOAP messages without having todirectly create the XML yourself.• SAAJ was originally part of the Java APIfor 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. 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. 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. 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. 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. 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
  13. 13. Sun’s Web Services Stack 13
  14. 14. JAX-RPC 14
  15. 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. 16. Remote Procedure CallsClient 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. 17. RPC Example – Java RMI <<Interface>> Java Remote Interface rmic compiler Client Remote Object ImplementationRMI Client RMI Server Stub Skeleton Java Remote Method Protocol (JRMP) is On-the-wire protocol
  18. 18. RPC Example - JAX-RPC
  19. 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. 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. 21. JAX-RPC Design Goals Easy to use programming model • For both defining & using a service Hides all the plumbing • You dont 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. 22. JAX-RPC Architecture JAX-RPC JAX-RPC Client WSDL Document Service Endpoint Generated JavaWSDL WSDLJava CodeContainer Container Client-side JAX-RPC Server-side JAX-RPC Runtime System Runtime System SOAP HTTP
  23. 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. 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 classestool WSDL Service contract Packaged application (war file)
  25. 25. JAX-RPC : Web Service Endpoint JAX-RPC Service Endpoint WSDL<-->Java WSDL Document Container Server-Side JAX-RPC Runtime System SOAP HTTP
  26. 26. JAX-WS 26
  27. 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
  28. 28. JAX-WS Layered Architecture 28
  29. 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. 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. 31. Start with a Java Class 31
  32. 32. Server-Side Programming Model: POJO1 Write a POJO implementing the service2 Add @WebService annotation to it3 Build and Deploy the application WSDL is automatically generated at runtime1 Point your clients at the WSDL e.g. http://myserver/myapp/MyService?WSDL 32
  33. 33. Example 1: Servlet-Based Endpoint@WebServicepublic 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. 34. Service Description Default Mapping• Java mapping => WSDL 34
  35. 35. Example 2: EJB-Based Endpoint@WebService@Statelesspublic 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. 36. Customizing through Annotations@WebService(name=”CreditRatingService”, targetNamespace=””)public class CreditRating { @WebMethod(operationName=”getCreditScore”) public Score getCredit( @WebParam(name=”customer”) Customer c) { // ... implementation code ... }} 36
  37. 37. Start with a WSDL file 37
  38. 38. Generating an interface from WSDL• WSDL => Java generation 38
  39. 39. Implementing a Web Service from a Generated Interface 39
  40. 40. Server Side Web Service 40
  41. 41. JAX-WS uses JAXB for Data Binding 41
  42. 42. add() Parameter : Example 42
  43. 43. JAXB XML Schema to Java Mapping 43
  44. 44. Client Side Programming 44
  45. 45. Java SE Client Side Programming• Point a tool (NetBeans or wsimport) at the WSDL for the service wsimport• 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. 46. Example : Java SE-Based ClientCalculatorService 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. 47. Java EE Client Side Programming• Point a tool (NetBeans or wsimport) at the WSDL for the service wsimport• Generate annotated classes and interfaces• Inject a @WebServiceReference of the appropriate type• No JNDI needed• Invoke any remote operations 47
  48. 48. Example : Java EE-Based Client@Statelesspublic class MyBean { // Resource injection @WebServiceRef(CalculatorService.class) Calculator proxy; public int mymethod() { return proxy.add(35, 7);} 48
  49. 49. Client Side 49
  50. 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. 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. 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. 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. 54. @WebResult• Customizes the mapping of the return value to a WSDL part and XML element.• Attributes > header > name > partName > targetNamespace
  55. 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>
  56. 56. JAX-WS - Provider
  57. 57. JAX-WS - Dispatch• Web service client applications may choose to work at the XML message level by using the Dispatch<T> APIs.• The<T> interface provides support for the dynamic invocation of service endpoint operations.• Similar to Provider on server side
  58. 58. JAX-WS - Dispatch
  59. 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. 60. Thank you 60