Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
JBoss Web Services Stuart Wheater Arjuna Technologies ADAPT IST-2001-37126 Contents • The purpose of this presentation is to summaries some of the issues involved in using web services on JBoss • Cover: – – – – Overview of JBoss web services support Publishing web services Consuming web services Overview of “JBossNetExample” ADAPT JBoss Web Service Support • JBoss.net – JBoss.net is a plug-in to the JBoss application server that support Web Services • Goals – Painless implementation and publication of J2EE-based Web Services • EJB and JMX – Seamless integration of external Web Services running on other business platforms into the J2EE environment ADAPT JBoss.net Team • Lead Developer: Dr. Christoph Jung (Germany) – Web pages: http://www.jboss.org/developers/projects/jboss/dotnet.jsp • The JBoss.net team is integrating Apache Axis into JBoss – JBoss 3.0.6 (26th January 2003) • Axis-1.0-beta1 (15th March 2002) – JBoss 3.2.0-RC1 (14th January 2003) • Axis-1.0 (7th October 2002) • JBoss.net is only available when using the “all” server environment – Start JBoss with the command: “run.sh -c all” or “run.bat -c all” ADAPT Apache Axis • Axis is a SOAP engine, implemented in Java – A framework for constructing SOAP processors such as clients, servers, gateways – Began life as IBM’s SOAP4J – Third generation of Apache SOAP engine • License: The Apache Software License, Version 1.1 • Latest version is Axis-1.1-RC1 – 9th February 2003 – http://ws.apache.org/axis/dist/1_1RC1/ • Axis-1.1 release planned for late February ADAPT Publishing Web Services • Implementation techniques – JAX-RPC • Does not support JAXM – Axis’s proprietary support – jws files • Deployment techniques – AdminClient – “WSR” file – Auto deploy source (jws files) ADAPT JAX-RPC: High-level Service Interface • Standards compliant “Java object” level interface – Java™ API for XML-based RPC (JAX-RPC) 1.0 • Java package javax.xml.rpc – Implement a web service • “Service Endpoint” interface – Java interface which defines method and parameters of web service » Can be created using the WSDL2Java tool • Provide an implementation of the “Service Endpoint” interface – Axis provider type “java:RPC” • Other features: – Standards compliant API for Lifecycle event notification: init() and destroy() – Standards compliant API for request and response interception ADAPT Axis’s Low-level Service Interface • Axis provides a proprietary XML oriented interface – SOAP engine uses Java reflection to analysis deployed class for suitable method to call. • Axis-1.0-beta1 (JBoss-3.0.6) – – – – – org.w3c.dom.Element[] method(java.util.Vector) org.w3c.dom.Element[] method(org.apache.axis.MessageContext, java.util.Vector) org.w3c.dom.Document method(org.w3c.dom.Document) org.w3c.dom.Document method(org.apache.axis.MessageContext, org.w3c.dom.Document) org.w3c.dom.Document method(org.apache.axis.MessageContext) • Axis-1.0 (JBoss-3.2.0-RC1) – – – – org.apache.axis.message.SOAPBodyElement[] method(org.apache.axis.message.SOAPBodyElement) org.w3c.dom.Element[] method(org.w3c.dom.Element[]) org.w3c.dom.Document method(org.w3c.dom.Document) void method(org.apache.axis.message.SOAPEnvelope, org.apache.axis.message.SOAPEnvelope) – Axis provider type “java:MSG” ADAPT Axis’s Ultra-low-level Service Interface • Axis provides a raw engine interface – Register own “provider class” • Extension of the org.apache.axis.providers.BasicProvider class – void invoke(org.apache.axis.MessageContext) – void generateWSDL(org.apache.axis.MessageContext) – ... – In deployment descriptor: • <service … provide=“java:org.eu.adapt.AdaptableProvider”> ADAPT jws File: Very-Easy Service Interface • jws file provide a very simple technique to implementing and deploying web service – jws files contain Java source, but with a “jws” postfix. – Calculator.jws: • public class Calculator { public int add(int v1, int v2) { return v1 + v2; } } – Deployed by simply copying jws file to • <jboss home>/server/all/deploy/jboss-net.sar/jboss-net.war – Engine will compile java and export methods as web service – Very useful for test web services • This does not seem to work with JBoss-3.2.0-RC1 ADAPT Deployment descriptor (WSDD file) • Deployment in Axis is based on XML descriptions in WSDD files – Example • <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="JAXRPCCountersService" provider="java:RPC"> <parameter name="className“ value="org.eu.adapt.wsexample.ws.JAXRPCCountersImpl"/> <parameter name="allowedMethods" value="create remove set get increase"/> <parameter name="scope" value="Application"/> </service> </deployment> – Request, response and fault interceptors • <requestFlow> <handler . . ./> </requestFlow> ADAPT Deployment using AdminClient • Axis provides an administration program which allows web services to be registered and administer remotely – org.apache.axis.client.AdminClient – To publish a web service • Need to copy a jar with web services implementation to: – <jboss home>/server/all/deploy/jboss-net.sar • Then run AdminClient with web service’s WSDD file as an argument ADAPT wsr File • JBoss.net have provided a more convenient technique for deploying web service, using wsr files – wsr files are a form of jar file • Contains the Java classes which implement the web service • Deployment descriptor is place in the file: – “META-INF/web-service.xml” – The wsr file can be included in ear files. • <module><java>wsexample.wsr</java></module> ADAPT Consuming Web Services • Implementation techniques – JAX-RPC • Standards compliant “Java object” oriented interface • WSDL2Java tool – Generate client stubs and service locator – SAAJ • Standards compliant XML oriented interface • SOAP with Attachments API for Java – Axis’s proprietary API • Axis provides a proprietary XML oriented interface ADAPT Overview of “JBossNetExample” • The example consists of a set of simple counters (create, remove, set, get & increase) which are available as web service. – The implementation of this service uses JAX-RPC • EJBs (CMP Entity Beans) to manage persistent state. – ant build script • Compilation of Java source • Creation of jar, wsr & ear files • Deployment – JBoss-3.0.5 (based on axis-1.0-beta1) ADAPT