So Guillaume and I talked at ApacheCon EU, and we came up with the
following thoughts about ServiceMix integration into Geronimo.

"Use Cases"

* Deploy combined JBI/J2EE applications.  In the short term there may
not be "one bundle" such as a ZIP or EAR containing both types of
components, but they should be able to work well together.
  * A J2EE web application should be able to send messages to the JBI bus
  * A JBI service should be able to dispatch messages to a J2EE
endpoint (other than just an MDB via JMS, etc.).  Typically this would
be a stateless session bean.
  * Should be able to deploy both JBI and J2EE components using the
same deploy tool(s)
  * Eventually, should be able to deploy a combined package
containing both types of components, supporting bidirectional
dependencies (J2EE components send messages to JBI components in the
same "app" and vice versa)
* Manage Geronimo and ServiceMix together, via a combined admin
console, combined JMX space, etc.
* Share resources between Geronimo and ServiceMix
  * Same security realm for authentication and same Subject for authorization
  * Same transaction manager
  * Same HTTP server
  * Single source of SSL settings (keystores, passwords, etc.) & SSL factories

As I understand it, as of today:

* There are GBeans to start ServiceMix in Geronimo
* There is a builder to deploy JBI service assemblies to ServiceMix
using the Geronimo deploy tools (I'm not clear whether this can also
deploy "JBI components", which actually seem more like containers)
* Some work has been done to leverage the Geronimo transaction manager
  * The JCA flow in ServiceMix may use the Geronimo transaction manager
* There is a ServiceMix admin console using the same technology as
the Geronimo admin console

So out of these, we have the following to-dos to create a ServiceMix
plugin for Geronimo 1.1:

* Try out the current ServiceMix Geronimo GBeans
* Confirm whether the JCA flow uses the Geronimo transasction manager correctly
* Update the GBeans to expose EJBs as endpoints for ServiceMix
(perhaps leveraging JSR-181 code for mapping normalized messages to
EJB invocations?)
* Provide a GBean that is a "client factory" -- so you can map this
factory into JNDI for a J2EE component, and it can look that up and
use it to generate a ServiceMixClient instance
   * Provide factories that support both client authentication
(caller specifies user/password if any) and container authentication
(e.g. Subject from web app login is passed to ServiceMix as is)
* Add a security provider to ServiceMix that uses Geronimo security
realms to authenticate and populate a Subject
* Update ServiceMix so it can use the Geronimo HTTP container for
HTTP/HTTPS binding components (allowing only configuring of the part
after http://host:port/context/ in the URL)
* Add the glue code to deploy the ServiceMix admin screens to the
Geronimo admin console when the ServiceMix features are added
* Create and document sample apps to call JBI->J2EE and vice versa

And the following that will require Geronimo code changes (in other
words, targeting G 1.2+):

* Provide a deployment unit that contains both J2EE and JBI
components (either an EAR with extra content or a ZIP containing both
a JBI service assembly and an EAR, etc.)
* Let ServiceMix initiate HTTP bindings on new ports, wtih fully
arbitrary URLs, etc.
* Update Geronimo keystore provider to offer the new functions that
ServiceMix needs

We thought it would be best for any work done on this in the short
term to happen in the ServiceMix SVN head (for GBeans and Geronimo
"configus") using the ServiceMix 3.0-M2-incubating ServiceMix release
for the ServiceMix features, and the Geronimo 1.1 release for the
Geronimo features.

Anyone else have any thoughts about this?

Thanks,
   Aaron

Reply via email to