ServiceMix is an open source JBI container, JSR 208
Overview on ServiceMix, ESB and JBI
ServiceMix is a bus system (ESB) which can contain several independent services. Those services may be xslt
transformation, a router, a workflow or some other service. They are based on JBI Service Engines (SE).
But how to get data to those services and back (onto the bus):
Now there are additional bindings like for file system, ftp, email etc. to get data onto the bus and vice versa.
Those bindings are called JBI Binding Components (BC).
How can I setup such bindings or services:
There are JBI Service Units (SU) which are endpoint configurations for the bus. A service unit will be deployed
to the bus and instantiate endpoints for services and bindings. There are also Service Assemblies (SA) which
is a deployment format containing one or more Service Units and Shared Libraries (SL) which contain mostly
common classes, methods and constants used by more than one component.
A use case for a better understanding:
Imagine the following situation. At customers site they have a host system running IBM MQSeries. This system
contains FO documents which need to be converted into PDF format (for example). You are not allowed to install
something to this machine. The converted documents have to be put to a ftp folder. If a conversion fails, an operator
has to be informed via email, containing the error log and the original document as attachment.
How to solve it using ServiceMix
1. you setup a machine with servicemix running
2. you setup a MQSeries Binding Component for polling the documents from the host system
3. you setup a FO to PDF service engine inside the smx
4. you configure the poller to send the polled documents to the conversion engine inside the bus
5. you setup a ftp sender for sending the converted files
6. you setup a mail sender to notify an operator on demand
7. you configure your converter to send to email-sender on failure and to send to ftp-sender on success
That's it.
This is just a very simple use case. Most of the time you will have much more
complex scenarios. The advantage is that JBI is a standard. This means
bindings and services can be used in every JBI compliant container (at least
it should be like this) and you should be able to use JBI compliant components from other ESB's as well.