Geronimo_MoinMoin_wiki > EWSGeronimoIntegeration
Added by Confluence Administrator, last edited by Confluence Administrator on Aug 02, 2006

Web Service Stack of the Geronimo

The Web Service Stack of the Geronimo has two parts

  1. The runtime that wait for the SOAP requests in a well known port and dispatch the request using the J2EE component on which the Web Service is Based on.
  2. A deployment architecture that accept a Web Service Module as explained by the J2EE web Service specification and deploy the Web Service in Geronimo.

The Web Service Runtime

Architecture Diagram

How a web service request is served

Axis is integrated to the Geronimo as a Gbean called AxisGBean. The WebServiceManager will check and start the Web Container (Jetty) and the EJB Container (OpenEJB) if they are not already started. The Axis Servlet, the servlet listener will wait for soap calls. This servlet provide by Axis will act as a JAX-RPC handler and will be in charge to dispatch request either to POJOs or EJBs.

Web Service Deployment

1. Geronimo Deployment module will find that the J2EE module it accepts is a web Service module by looking at the webservices.xml file in the META-INF. 1. The Geronimo deployer will call the EWS tool and it will generate the implementation classes + DD looking at the web service module. The EWS will take care of the parsing of the JSR109 specific DD (webservice.xml file and jaxrpc mapping file.) For avoid the web.xml and ejb-jar.xml are parsed twice EWS hope to use Geronimo DD mechanism (to my understating that can done via GBeans.) But right now EWS use DOM to parse them.

  1. The deployment module will call the deploy method in the AxisGBean to deploy the web Service in the Geronimo
  2. The implementation classes will contains a web service. To deploy the web service in the Axis 3 things should be done.
    • the classes in the web service should be loaded to the Web Container the web service can be deployed in Geronimo using the Axis AdminClient
    • The web service Client side stubs should be generated and the service interface (XXLocator) should be bind under the JNDI context. (if service mappings defined) The WSDL file of the Web service should be published in the JAXR registry
    • If the implementation bean is based on EJB the EWS will generate an EJB that used the Session Bean. The Geronimo EJB-Jar deployment support will be used to deploy the generated EJB. The EJB should be Bind under the JNDI name as given in the Open EJB DD generated by the EWS.

TODO

We are now in a position to deploy and invoke a Simple Typed web service using the following steps

  • create a Web Service module as explaied by the Jsr 109 spec
  • run the EWS tool on it and generate the implementation jar
  • deploy the web service programatically by gaining a referance to the AxisGbean (which I assumed to the started already) and call the deploy(..)

The Web Service will be listing for SOAP requests NOW . For more information see the test cases.

his list the TODO's for the Geronimo Axis Module. Let me compile this Again after bit of thought.

Get the Complex Type Web Services working

There is a failure of the Complex typed Web Services due to Security failure. The problem is reproduced by a test case (which is excluded for the time been) in the axis module.

Propagation to use the EWS provider

This is use a Axis provider to invoke the Web Service rather than than doing it in the XXBindingImpl java class which would be more cleaner. This will fix the build problem arise due to the dependency class does not find when the maven repository is rebuilding.

Integration of Axis module into Geronimo assembly

TBD.. Any pointers how this should be done. When the AxisGBean is started the Web Services will be started. Have to sort out the way to find the Web Container and J2EE Container is already started and start them if they are not already started.

Support web-service deployment through the JSR88 deployer

TBD.. The Geronimo deployment module should call the AxisGBean.deploy(..) method at some point. Got to find out finer details.

Support deployment-time generation of Java Handlers

Am not sure about the what does actually mean, are they Axis Handlers and if what is the use case that it is needed?

Auto-deployment of exported EJB

  • The EWS will accept a Web Service module as explained the JSR 109 specification and generate a implementation jar. This implementation jar created by the EWS can be deployed in to the Geronimo using the AxisGBean.deploy(....). The code generation with EWS can be put in to the AxisGBean.deploy(....) and the deployment is really nice. But it was not done due to the reason that the JAVA_HOME/lib/tools.jar is not avalible at the Geronimo test calsspath.

Define API for EJB invocation integration and impl for OpenEJB

  • The EJB invocation is done via one of the three ways.
  1. Using the Remote interfaces
  2. Using the local interfaces
  3. Using the ContainerIndex

if we can set up a common interface to make the invocation styles hidden it would be a nice thing.

Integrate with Security, specifically JACC

Chatura, Priyanaga Works on the EWS security part and Web service part of the Security is done. They use the JASS to propagate the security contexts. We had tested the security with the Jboss and JoAs at the application layer. We should be able to do a much closer integration with the Geronimo. Did Geronimo uses the JASS as well?

Setup up Geronimo TransactionContext for invocation

Dasarath work on the transaction parts of the EWS and he had a WS-AT implementation for transaction support. I think the Web Service side is done. We have to figure out how the transaction context set to the thread before the invocation.

JNDI support for outbound service-refs (war,ejb,app-client)

TBD..

Ongoing resolution of Jira issues

WISH LIST

Start and stop a individual Web Service inside the Axis, via GBeans

currently code support starting and stoping the Axis only.