Download JBoss web services

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

URL redirection wikipedia , lookup

Transcript
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