1 / 27

Development of Web Services

Development of Web Services. JAX-WS. Introduction. JAX-WS = Java API for XML Web Services JAX-WS - a universal technology to develop Web services Part of Java EE 5 and Java SE 6 JAX-WS 2.0 replaces JAX-RPC The centre of gravity moves from RPC-style to document-style web servi ces

aquintana
Télécharger la présentation

Development of Web Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Development of Web Services JAX-WS

  2. Introduction • JAX-WS = Java API for XML Web Services • JAX-WS - a universal technology to develop Web services • Part of Java EE 5 and Java SE 6 • JAX-WS 2.0 replaces JAX-RPC • The centre of gravity moves from RPC-style to document-style web services • Reference Implementation – by GlassFish

  3. History: JAX-RPC • JAX-RPC = Java API for XML-based RPC • First version (JAX-RPC 1.0) wasJSR-101, released in June 2002. • Its goal - to make simpler distributed development between Java and non-Java platforms • Allows to call any Web service from Java corresponding to its WSDL

  4. JAX-RPC model JAX-RPC model has two sides: • Server-side programming model • Allows to develop Web service endpoints as Java objects or Enterprise JavaBeans, which run on the J2EE platform • Client-side programming model • Allows to access a remote Web service as if it were a local object, using methods that represent SOAP operations

  5. Server-Side Programming • Two server-side programming models for creating Java EE Web service endpoints: • POJO endpoints • EJB3 Stateless Session Bean endpoints

  6. JAX-WS Annotations • Annotations play a critical role in JAX-WS 2.0 • Annotations are used in mapping Java to WSDL and schema • Annotations are used in runtime to control how the JAX-WS runtime processes and responds to web service invocations • Annotations utilized by JAX-WS 2.0 are defined in separate JSRs: • JSR 181: Web Services Metadata for the JavaTM Platform • JSR 222: JavaTM Architecture for XML Binding (JAXB) 2.0 • JSR 224: JavaTM API for XML Web Services (JAX-WS) 2.0 • JSR 250: Common Annotations for the JavaTM Platform

  7. Web Service Implementation • Write a POJO implementing the service • Add @WebService annotation to it • Optionally, inject a WebServiceContext • WebServiceContextmakes it possible for a web serviceendpoint implementation class to access messagecontext and security information relative to a request • Deploy the application • Point your clients at the WSDL • e.g. http://myserver/myapp/MyService?WSDL

  8. Example: HelloWebService @WebService(name = "HelloWebService") @SOAPBinding( style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) public class HelloWebService { @WebMethod public String hello(@WebParam(name = "name") String name){ return "Welcome " + name + " !!!"; } }

  9. More Annotations • Web Services Metadata Annotations • @WebService • @WebMethod • @OneWay • @WebParam • @WebResult • JAX-WS Annotations • @RequestWrapper • @ResponseWrapper • @WebEndpoint • @WebFault • @WebServiceClient • @WebServiceRef

  10. Web Service Deployment • To run Web service you’ll need to deploy it into web server with Java EE compliant web services • Java service endpoint usually is packaged as a web application in a WAR file • We will consider JBoss Application Server withJBoss Web Services (JBossWS)

  11. JBoss Web Services • JBossWS is a JAX-WS compliant web service stack developed to be part of JBoss' Java EE 5 offering • At deployment time JBossWS will create services endpoints from annotated classes and publish the WSDL • At runtime SOAP requests are converted to JAVA invocations

  12. JBossWS deploy-time & run-time

  13. Demo • The demo project: http://java-eim.googlecode.com/svn/trunk/ java-eim-demo-jbossws • Two simple Web services: • HelloWebService • CalculatorWebService • See instructions in README.txt

  14. JBossWS Console http://localhost:8080/jbossws/

  15. Client-Side Programming • JAX-WS client programming models: • Static Dynamic proxy client API • Dynamic Dispatch client API • Dynamic proxy client • Invokes a Web service based on a Service Endpoint Interface (SEI) which must be provided • Creating web service clients usually starts from the WSDL (“WSDL first” approach) • Special tools are used to generate client classes

  16. Dispatch client API • Low level JAX-WS API to work at the XML message level or without any generated artifacts • Requires clients to construct messages or message payloads as XML • Requires an intimate knowledge of the desired message or payload structure

  17. Client Side Generation (JBossWS) • JBossWS provide a tool for client side generation from WSDL wsconsume • From <JBOSS_HOME>/bin execute: wsconsume -k -p <package> <path_to_wsdl>

  18. Generated Files • HelloWebServiceService.java • Service factory • HelloWebService.java • Service Endpoint Interface • Hello.java • Custom data type for request • HelloResponse.java • Custom data type for response • ObjectFactory.java • JAXB XML Registry • package-info.java • Holder for JAXB package annotations

  19. Client Code import xxx.generated.hello.HelloWebService; import xxx.generated.hello.HelloWebServiceService; public class HelloWebServiceClient { public static void main(String[] args) { HelloWebServiceService helloFactory = new HelloWebServiceService(); HelloWebService helloService = helloFactory.getPort(HelloWebService.class); String response =helloService.hello("WebServiceClient"); } }

  20. Web Service Invocation • A Java program invokes a method on a stub (local object representing the remote service) • The stub invokes routines in the JAX-WS runtime system • The runtime system converts the remote method invocation into a SOAP message • The runtime system transmits the message as an HTTP request

  21. Server-Side Debugging (JBoss) • Add or un-comment the following line in run.bat rem JPDA options. Uncomment and modify as rem appropriateto enable remote debugging. set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket, address=8787,server=y,suspend=n %JAVA_OPTS% 2. Create new “Remote Java Application” debug configuration in Eclipse: Run  Open Debug Dialog

  22. Server-Side Debugging (JBoss)

  23. Server-Side Debugging (JBoss) • Start JBoss • Launch Debug configuration in Eclipse

  24. Server-Side Debugging (JBoss) • Add breakpoint, e.g. to Web service code and run client • Server will stop at breakpoint

  25. Server-Side Debugging (JBoss)

  26. References • JAX-WS Annotations https://jax-ws.dev.java.net/jax-ws-ea3/docs/annotations.html • JBossWS Home http://labs.jboss.com/jbossws/ • JBossWS Wiki http://jbws.dyndns.org/mediawiki/index.php?title=JBossWS

  27. References • JAX-WS Reference Implementation by GlassFish https://jax-ws.dev.java.net/ • JAX-WS Specification (JSR 224) http://jcp.org/en/jsr/detail?id=224 • Presentation about JAX-WS http://gceclub.sun.com.cn/java_one_online/2006/TS-1194/TS-1194.pdf

More Related