Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Standard JBI routing, for example, a binding component specifies a particular service engine to dispatch to, or the bus matches the Normalized Message XML content to a service's WSDL
  2. Content-based routing using XPath expressions on the Normalized Message XML content
  3. Rules-driven routing using the Drools service engine
  4. Script-driven routing using the Scripting service engine
  5. Java code can perform routing using the ServiceMix POJO Support
  6. You can use drop in a JBI-compliant BPEL service engine (such as Ode to perform routing (among other things)

...

  • JBI routing, when configuration is needed, is configured in an XML file in the Service Unit
  • XPath/XSLT routing and transformation uses an entry in the XML file and a separate XSLT file in the Service Unit
  • Drools rules are typically defined in an XML file bundled in the Service Unit
  • Script-driven routing and transformation can use scripts in the XML file in the Service Unit
  • BPEL process definitions are packaged in the Service Unit

Orchestration

What orchestration options are available?

Is the answer you're looking for BPEL? It is not distributed with ServiceMix, but thanks to the JBI standards, you can drop in a JBI component for a BPEL engine, such as Apache Ode (literally – download the Ode or other JBI component to servicemix/install). So we generally consider BPEL to be a supported orchestration option.

Other options include using Scripting languages such as Groovy, which in addition to routing and transformation, can save state across requests and therefore perform at least some orchestration (though the state is not maintained across server restarts).

You could also write custom Java code to perform orchestration.

Are transactions supported?

There is no built-in support for "business transactions" (such as WS-TX BusinessActivity). ServiceMix can preserve SOAP headers as Normalized Message headers, so individual services might react to them, but we don't really claim support.

It is possible to use transactional delivery on the bus, either encompassing a single message delivery or a flow involving a series of components and response messages. See, for example, the JMS and JCA Flows, as well as the page on Transactions. However, to be honest, this is not the easiest to configure and the documentation is liable to give you a headache.

Security

Performance

Testing

...