Component Matrix

ServiceMix defines several types of components:

  • JBI SE : standard JBI Service Engine
  • JBI BC : standard JBI Binding Component
  • LW SE : LightWeight Service Engine
  • LW BC : LightWeight Binding Component

Lightweight components are components that can be configured using activation specs in the servicemix.xml configuration file.
Standard JBI components can be deployed at run-time and accept service units deployments. These components may in addition provide a way to configure them in a lightweight fashion.
Note that the servicemix-lwcontainer is a standard JBI component which is able to deploy lightweight components so that you can add / remove lightweight components at run-time.

A component can act as two different roles with respects to JBI MessageExchanges. In a given exchange, the originator component is said to be the consumer and the target component is said to be the provider.

The JBI spec defines service invocation as an instance of an interaction between a service consumer and a service provider. The following are the four service invocation patterns are required to be supported by any JBI implementation:

  • In-Only: consumer issues a request to provider with no error (fault) path provided.
  • Reliable In-Only: consumer issues a request to provider. Provider may respond with a fault if it fails to
    process request.
  • In-Out: consumer issues a request to provider, with expectation of response. Provider may
    respond with a fault if it fails to process request.
  • In Optional-Out: consumer issues a request to provider, which may result in a response.
    Consumer and provider both have the option of generating a fault in response to a message received during
    the interaction.

The WSDL 2.0 Extensions spec defines a Message Exchange Pattern (MEP) as: "the sequence and cardinality of abstract messages listed in an operation." JBI uses this concept to define interactions between two nodes: the consumer node, and the provider node. The pattern is defined in terms of message type (normal or fault), and message direction. MEPs always reflect the provider's point of view. For example, in a request-response interaction, the MEP is in-out, which reflects the flow of messages as seen by the provider. From the consumer's perspective, the direction of message flow is reversed, but the MEP used by the NMR in its interactions with the consumer will always reflect the provider's perspective. This is a conventional practice when dealing with WSDL MEPs.

Handy Hint

If you want to see how a component is used in the examples shipping with ServiceMix, try such a  Google Codesearch to find out wich sample uses the component. It's a lot faster than looking on the local hard drive unless you use a specialised desktop search engine.

Below is a matrix of ServiceMix components and the JBI MEPs supported by each.

  Type Description Role MEPs Class name
Cache LW SE Used for caching service invocations to avoid unnecessary load on expensive services. Mixed In-Out o.a.s.components.cache.CacheComponent
ChainedComponent
LW SE
Router - Will route a message from one component to another
Mixed
In-Out
 
Drools LW SE   Mixed In-Only o.a.s.components.drools.DroolsComponent
EchoComponent
LW SE
Exhoes back what it recieves
Provider
In-Out
 
Email LW BC Email support via JavaMail(http://java.sun.com/products/javamail/).
Provider In-Only o.a.s.components.email.MimeMailSender
Emailcont'd LW BC
Provider In-Only o.a.s.components.email.SimpleMailSender
Emailcont'd LW BC

Consumer In-Only o.a.s.components.email.MimeMailPoller
File LW BC Components for writing messages to files and polling directories and sending files to the JBI.
Provider In-Only o.a.s.components.file.FileSender
File LW BC
  Consumer In-Only o.a.s.components.file.FilePoller
FTP LW BC FTP support via the Jakarta Commons Net Library.
Provider In-Only o.a.s.components.net.FTPPoller
FTPcont'd LW BC   Consumer In-Only o.a.s.components.net.FTPSender
Groovy LW SE This component allows Groovy scripts to be used as endpoints, transformers, or services.  This allows you to combine the power of the Groovy scripting language with the ServiceMix JBI container.
Provider
In-Only or In-Out depending on the Groovy Script sent to the Groovy SE.
 
HTTP LW BC Both client-side GET/POST with commons httpclient and server side processing with Servlets or Jetty.
     
HTTP cont'd LW BC HttpConnector
Consumer
In-Out
 
HTTP cont'd LW BC
HttpInOnlyBinding Consumer In-Only
 
HTTP cont'd LW BC
HttpSoapConnector
Consumer
In-Out
 
HTTP cont'd LW BC
HttpInOnlySoapBinding
Consumer In-Only
 
Jabber LW BC Provides Bindings to Jabber network via the Extensible Messaging and Presence Protocol (XMPP) protocol.


 
Jabber cont'd LW BC
JabberReceiver
Consumer In-Only
 
Jabber cont'd LW BC
JabberChatSender Provider In-Only
 
Jabber cont'd
LW BC
JabberGroupChatSender Provider
In-Only
 
JAX WS          
JCA LW SE
Allows the Java Connector Architecture to be used for efficient thread pooling, transaction handling and consumption on JMS or other Resource Adapters
Consumer
In-Only
 
JMS LW BC JMS via the Java Messaging Service plus all of the great, reliable, and scalable transports in ActiveMQ which includes persistence, recovery, and transaction support.
JMSInBinding
Consumer In-Only  
JMS cont'd LW BC JmsInUsingJCABinding
Consumer
In-Only  
JMS cont'd LW BC JmsRecieverComponent
Consumer
In-Out
 
JMS cont'd LW BC JmsSenderComponent
Provider In-Only 
 
JMS cont'd LW BC JmsServiceComponent
Provider In-Out
 
MockServiceComponent

Useful for controlling what is sent back to the consumer.  You have to configure the answer.  Send a preconfigured response back.
Provider In-Out
 
PipelineComponent
LW SE
Will Bridge an In-Only request to an In-Out request exchange pattern.
Mixed
In-Out  
PXE JBI SE BPEL Engine      
Quartz LW SE A component for job scheduling Consumer In-Only  
Reflection LW SE The Reflection API represents, or reflects, the classes, interfaces, and objects in the current Java Virtual Machine.  This API is handy if you are writing developement tools such as debuggers, class browsers, and GUI builders. Consumer In-Only o.a.s.components.reflection.proxyIntOnlyBinding
Reflection cont'd LW SE   Consumer In-Out o.a.s.components.reflection.proxyIntOutBinding
RSS LW BC Support via Rome library for accessing and processing RSS Feeds.
rsspollingcomponent
Consumer
In-Only  
RSS cont'd LW BC
feedwriter prov in-only
Provider
In-Only
 
SAAJ LW BC SAAJ is for Soap With Attachments and Apache Axis support
Provider In-Out
 
Scripting LW SE A component to allow any JSR 223 compliant scripting engine to be used to easily create a component , perform a transformation, or be an expression language.
Provider
In-Only or In-Out depending on the Groovy Script sent to the Groovy SE.  
servicemix-bpe
JBI SE
WSDL 2.0 Adjuncts defines pre-defined extensions for WSDL 2.0, including MEPS, operation styles, and binding extensions.
Consumer / Provider 
All MEPs supported.  
servicemix-eip  JBI SE
A routing container where different routing patterns can be deployed as services unit.  Based on the EIP Patterns book.
Consumer / Provider 
n.a.  
servicemix-http JBI BC HTTP binding Consumer / Provider
In-Only / In-Out  
servicemix-jms JBI BC JMS binding Consumer / Provider
In-Only / In-Out  
servicemix-jsr181 JBI SE Hosts annotated POJOs Provider In-Only / In-Out  
servicemix-lwcontainer JBI SE Hosts lighweight components n.a. n.a.  
servicemix-sca JBI SE Container for SCA modules Consumer / Provider
   
servicemix-wsn2005 JBI SE WS-Notification Consumer / Provider
n.a.  
servicemix-eip JBI SE EIP patterns Consumer / Provider
n.a.  
servicemix-mail JBI BC Mail binding Consumer / Provider
In-Only / In-Out  
servicemix-osworkflow JBI SE OSWorkflow Consumer
n.a.  
servicemix-script JBI SE Spring dynamic languages engine Consumer
n.a.  
servicemix-scripting JBI SE JSR-223 scripting engine Consumer
n.a.  
servicemix-snmp JBI BC SNMP binding Consumer
In-Only  
servicemix-validation JBI SE xml validation engine Consumer
n.a.  
servicemix-vfs JBI BC VFS binding Consumer / Provider
In-Only  
StreamWriterComponent
LW SE
Similar to TraceComponent, writes content of input message to the stream requested. Provider In-Only
 
TraceComponent
LW SE
Logs output to console Provider In-Only
 
Validation
LW SE
For schema validation of documents using Java API for XML Processing (JAXP 1.3) and XMLSchema (http://www.w3.org/XML/Schema) or RelaxNG - a schema language for XML (http://relaxng.org/). If the inputted XML is validated as okay, the same XML is sent back. If there is an error a fault is returned to the sender. Mixed
As the Provider, the MEP is In-Only, as the consumer it is also In-Only.  This component can also have an In-Out exchange pattern, which is the main pattern for this component.
 
VFS LW BC VFS via the Jakarta Commons Net library which provides access to file systems, jars/zips/bzip2, temporary files, WebDAV, Samba (CIFS), HTTP, HTTPS, FTP, and SFTP among others.
     
VFS cont'd LW BC FilePoller
Consumer
In-Only
 
VFS cont'd LW BC
FileWriter
Provider
In-Only
 
WSIF LW BC WSIF for integration with the Apache Web Service Invocation Framework (WSIF)
Provider In-Only
 
XFire LW        
XPath Routing LW SE Used to perform content based routing in an ESB.  This means you route messages around your service bus based on the message properties of the content of the message.  When integrating systems accross language boundries its common to use XML as a universal message format; so XPath is an ideal tool to perform content based routing and transformation.
Mixed Recieves an In-Only exhange and sends an In-Only message to another component.
 
XSLT LW SE The XsltComponent will preform an XSLT transformation of an inbound Normalized Message and generate an output message as a Normalized Message.
Mixed MEP is In-Only, as the consumer it is also In-Only.  This Component can also have an In-Out exchange pattern, which is the main pattern for this component.
 
XSQL LW BC