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