JBoss Web Services
JBoss Web Services. Stuart Wheater Arjuna Technologies. 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
JBoss Web Services
E N D
Presentation Transcript
JBoss Web Services Stuart Wheater Arjuna Technologies
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”
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
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”
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
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)
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
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”
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”>
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
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>
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
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>
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
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)