Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Latest update

The latest Geronimo Tuscany plugin we have can be installed on Geronimo v2.1.3. The plugin supports SCA reference and property injection in JSP, Servlet, Servlet Filters, Listeners, JSF Managed Beans, Session EJB and Message-Driven EJB. For instructions on installing the plugin and running sample applications, see http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Installing+Tuscany+Plugin+for+Geronimo .

Note: Rest of the page is not up to date (sad). Please bear with us while we update this page.
---------------------------
A page to capture the ideas and discussions on Geronimo-Tuscany Integration. This wiki page is a summary of the discussions on the mailing lists. Feel free to help in developing the ideas here.

...

1) I develop SCA components, assemble them in a composite, package them
in an SCA contribution. I don't really know what a WAR or an EAR is, I'm
just using the SCA programming model and packaging model. I deploy my
SCA contribution to Geronimo and run it there. I can then access these services using
the various bindings that Tuscany provides.

2) I'm assembling SCA components, some of them developed using the SCA
programming model (Java components, BPEL components or composite
components for example) and I want to re-use an EJB module in my
assembly, allowing other SCA components to talk to its session beans
using the SCA programming model. That EJB module does not know anything
about SCA, it only uses the EJB programming model.

3) I want to use a Web app in my SCA assembly and call SCA components
from it. I should be able to declare an SCA component representing my
Web app, wire that component to other SCA components in the assembly,
and then magically the wired references will be available as proxies for
use in my JSPs, allowing me to call an SCA component using a simple
jsp:useBean tag. I should also be able to access the services inside of my
servlets, filters, etc by using annotations.

...

  • Tuscany modules should be deployable in Apache Geronimo.
    For this we need to write a geronimo-plugin with a deployer that can handle tuscany modules.
    On how to write a geronimo-plugin please refer the link below.
    http://cwiki.apache.org/GMOxDOC11/advanced-plugin-sample.htmlImage Removed.
    Initially we will be using a server wide SCADomain instance. The
    org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain implementation or a derived
    class will be used and exposed as a GBean in geronimo so that all the other configurations can
    lookup the domain via GBean lookup and add their composites.
  • Tuscany modules should use the existing geronimo http infrastructure.
    Create a tuscany -http-geronimo module that contains a geronimo specific.
    We need to write a ServletHost extension for Geronimo. What we need to do for this is write a java class that implements the org.apache.tuscany.sca.http.ServletHost
    interface. This interface has 2 methods namely
    void addServletMapping(String uri, Servlet servlet) throws ServletMappingException;
    and Servlet removeServletMapping(String uri) throws ServletMappingException;
    .We need to implement these methods such that they will add the servlet passed to the
    context corressponding corresponding to the URI in geronimoGeronimo. If there is no context then a new context
    must be created and the servlet should be added to that context. We should be able to add
    to default context as well. We shouldn't be able to add to contexts of other web
    applications. Here also geronimo can have either Jetty or Tomcat as the web container. Initially the
    idea is to just support Tomcat.
  • Tuscany modules should use the existing geronimo rmi infrastructure.
    tuscany-host-rmi needs to be replaced with a geronimo specific version that uses
    geronimo rmi infrastructure This may need a geronimo specific RMI host to be plugged in instead of the default one in tuscany.

Initially this is what we will be trying to achieve.

Things that need to be investigated further

  1. How to implement #2 and #3
    For #3 we may need to extend tuscany to have a new implementation.web implementation type that can consume the services exposed by other SCA Components.
  2. Having multiple SCADomains in the same server instance
  3. Using Distributed Domains
  4. Better integration of the bindings to take care of using geronimo infrastructure

Current Status

We have made some progress and here are the details:

  • Switched to version 2.0.1 of Geronimo and 1.0-incubating of Tuscany.
  • We have a plugin that has an EmbeddedSCADomain and a deployer that allows to deploy tuscany jars into Geronimo 2.0.1 server.  Contribution from multiple tuscany jars gets added to a single EmbeddedSCADomain.
  • We have created a ServletHost extension for Geronimo, so that the embedded Tomcat/Jetty server is used (instead of starting a new Tomcat/Jetty server) when webservice bindings are used.
  • We have a sample HelloWorldService tuscany jar that when deployed in Geronimo makes the service available as a WebService.
  • We have a sample SimpleBigBank-new that uses a reference ejb binding and makes the service available as a WebService. Note: Sample may need to be updated.
  • interface.wsdl element is not working.  Using interface.java is a work around we have for now. Note: Needs verification.
  • The code is in Geronimo Plugins at https://svn.apache.org/repos/asf/geronimo/plugins/tuscany.
  • Samples are available in Geronimo Sandbox at https://svn.apache.org/repos/asf/geronimo/sandbox/tuscany-integration

References

There are three mail chains providing more info
chain1
chain2
chain3

The OSOA J2EE Integration Whitepaper speaks about J2EE SCA integration concepts
OSOA J2EE Integration Whitepaper