Geronimo – JSR-109 Service Impl Integration

Here I am trying to extend the Proposal by Luis and Jeremy Geronimov Axis Integration.

The geronimo – JSR-109 Service Impl integration basically consists in the definition of a deployment architecture that defines the way how web services are implemented in Geronimo server and a set of interfaces that will be used by classes responsible for the ws's deployment.

How a web service request is served

  1. A servlet listener that 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.
  2. The Axis webapp will be deployed at startup. Or if It's possible as soon as JAX-RPC handler is need.
  3. There will be only one web-app where will reside the listeners and impl for the web ws, and the proxys to call the ejb service impl.

Deployment

  1. We will extend existing module in charge of WAR and EJB-JAR deployment, to take into consideration specific ws deployment files.
  2. 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.
  3. The implementation classes will contains a web service. To deploy the webservice in the Axis 3 things should be done.
  4. 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.
  5. If we deployed the Axis webapp the first time a JAX-RPC handler is need, we will trigger an event that will do it

Concerns

  1. We have to be sure that the service has started after the web container, because our service depends on it. How do we manage dependencies??
  2. Is it possible to have more than one listener (JAX-RPC handler)
  3. How the “extend existing module in charge of WAR and EJB-JAR deployment” is done and we should decide how the EWS called from the module. I think to read and Loading the web service module, Class loading and parsing (created DDBeans and pass them in if that works or should I create the DDBeans myself.) the ejb-jar.xml and web.xml file EWS can use Geronimo services.
  4. To get the Geronimo Internal based implementation working. I think it is theoretically resolved but got to get it working.