1 / 28

Web servisu izstrāde

Web servisu izstrāde. JAX-WS. Ievads. JAX-WS = Java API for XML Web Services JAX-WS ir fundamentāla Web servisu izstrādes tehnoloģija Java EE 5 un Java SE 6 sastāvdaļa JAX-WS 2.0 aizvietoja JAX-RPC Pāreja no RPC-style uz document-style web servisiem

Download Presentation

Web servisu izstrāde

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. Web servisu izstrāde JAX-WS

  2. Ievads • JAX-WS = Java API for XML Web Services • JAX-WS ir fundamentāla Web servisu izstrādes tehnoloģija • Java EE 5 un Java SE 6 sastāvdaļa • JAX-WS 2.0 aizvietoja JAX-RPC • Pāreja no RPC-style uz document-style web servisiem • Reference Implementation – by GlassFish

  3. Priekšvēsture: JAX-RPC • JAX-RPC = Java API for XML-based RPC • Pirmā specifikācijas versija (JAX-RPC 1.0) bija JSR-101 un tā bija izlaista 2002.gada jūnijā • Fundamentālais mērķis - vienkāršot sazināšanas starp Java un ne-Java platformām • Dod iespēju no Java programmas izsaukt Java Web servisu ar zināmu aprakstu (saskaņā ar servisa WSDL)

  4. JAX-RPC modelis JAX-RPC modelim, ir divas puses: • 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 • Ir sagatavots demo projekts: http://java-eim.googlecode.com/svn/trunk/ java-eim-demo-jbossws • Pašlaik ir izveidoti divi vienkārši Web servisi: • HelloWebService • CalculatorWebService • Instrukcijas pagaidām failā 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. Nobeigums Tas bija tikai īss ievads..! Web servisu temats ir daudz plašāks...

  27. 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

  28. 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