Notes on ServiceMix

see ServiceMix User Guide

JBI = Java Business Integration component
The Java Business Integration spec is a Java-based standard that defines a runtime architecture for plugins to interoperate via a mediated message exchange model (MEP). Messages between components are mediated by the Normalized Message Router (NMR). The NMR serves as an intermediary for routing messages amongst plugins, no matter where that component resides. Plugins do not communicate directly with one another; they only communicate with the NMR. This provides location transparency for the plugins.


SU = JBI Service Unit
The JBI spec includes deployment units for packaging of JBI components and JBI service units.  JBI Components are JBI compliant components that are deployed into ServiceMix and are awaiting a configuration to tell them how to run. 


A SU is essentially the packaging for a configuration for a JBI component and any of the necessary dependencies for the SU to be deployed. It's really just an archive to bundle together everything to deploy to the server. So to make use of one of the JBI components, all you really need to do is create a configuration.


SE = JBI Service Assembly
A service engine (SE) provides some type of logic inside the JBI environment and only communicates with the NMR. If a SE needs to communicate outside the JBI environment, it must send a message to a BC (via the NMR). Examples of SEs include rules engines, BPEL engines, XSLT engines, scripting engines, EJB continers, etc.


Service engines are the business-logic components in a JBI system and can serve as service providers/consumers. 



SA = JBI Service Assembly
The JBI spec also includes a deployment unit known as a service assembly.  A JBI SA is used to package up JBI SUs in order to be deployed to a container. A SA can include one or more SUs.  The SA is really just an archive to bundle up SUs for deployment to the JBI container.



Using JBI Components
JBI components are most typically provided to you with the JBI container and they provide support for some of the most common protocols and engines. In order to make use of these components as an application developer, you must provide a configuration for each component you want to use. Configurations are implementation specific but the packaging is defined by the JBI spec. Each component configuration must be packaged as a service unit (SU)  and each SU must be wrapped in a service assembly (SA). These are simply ZIP/JAR files that contain a XML descriptor named jbi.xml that is used by the JBI environment. 

No comments:

Post a Comment