Hi, Tuscany and ServiceMix teams !
Some months ago, I have started to develop an SCA JBI Component based on
Tuscany.
At last ApacheCon EU, I met with Jeremy Boynes (and other Tuscany
members)
and we
talked about working on a better Tuscany integration with ServiceMix, by
combining the
effort of both communities. We decided to bring that on the devs
list, so
here it is.
First, let me expose for the Tuscany teams who are not familiar with
JBI,
what a Service Engine
provides, and briefly outline how it works. When developing a JBI
application, you need:
* JBI components (Binding Components or Service Engines)
* JBI Service Assemblies
Components are installed on the JBI container and act themselves as
containers. BCs' role
is to communicate with services or clients outside the JBI bus by
using a
known protocol;
this includes HTTP, HTTP+SOAP, JMS, JMS+SOAP, etc... SEs on the other
side,
are meant
to provide the business logic: they are routers, transformers, services,
orchestration and they
are not tied to any protocol. Service Assemblies (SA) are composed
of one
or more Service Unit
(SU), each SU being targeted to a known component. The component is
fully
responsible for
handling the SU deployment which content is not specified (it will be
different from one component
to another). Components are thus containers because they will host
deployments of several SUs.
For Tuscany, the component would be a Service Engine, and I think
Service
Unit will be SCA modules.
The component is responsible for
* deploy and manage SU lifecycles
* accepting JBI exchanges from the JBI container and process them
The current component already handle service unit deployment, but the
message exchange processing
need to be enhanced / rewritten to provide bi-directional access to the
JBI
bus. From my understanding of Tuscany,
this represent a binding (which is the main thing to complete). The
current
one uses JAXB2 for the
marshalling layer, but maybe you will want to switch to SDO (I choose
JAXB2
because I was familiar with
it).
I would also propose that this JBI component may be better hosted at
Tuscany
instead of ServiceMix,
as a JBI component only relies on the JBI spec, but it will be highly
dependant on Tuscany. I found hard
to keep on with Tuscany changes during the past months, given the all
the
refactoring that occured.
The code is available at
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-sca/
--
Cheers,
Guillaume Nodet