Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

In the middle, there's the bus. The messages on the bus are JBI Normalized Messages, which are XML-based with optional binary attachments, header values, etc. (for more detail see What is JBI?).

On the bottom are binding components Binding Components. These are JBI components (like plugins) that have the capability to convert incoming messages from some protocol (like SOAP over HTTP, REST over JMS, SNMP, some custom binary junk, etc.) into Normalized Messages, and put those messages onto the bus. Or take a Normalized Message from the bus, and send it out using some other protocol. Or both.

On the top are service engines Service Engines. These are JBI components (again, like plugins) that can do interesting things with Normalized Messages. Like perform some custom message routing, or transform the message via XSLT, or run a BPEL process, or invoke a method on an EJB and return the result as another Normalized Message.

So when you deploy an a JBI application, it will probably include things like:

  • Some POJOs, Spring Beans, or other components with service logic
  • Configuration files to activate certain service engines (e.g. to convert accept Normalized Messages from the bus and translate those into method calls on your beans above)
  • Configuration files to activate certain binding components (e.g. to connect your services to the send or receive SOAP-over-HTTP protocol on a certain URL, converting to or from Normalized Messages on the bus)
  • Any additional routing rules, perhaps using a routing service engine, if it can't be deduced (e.g. by comparing the format of a Normalized Message to the WSDL describing the services) or needs additional customization

...

You could also write custom Java code to perform orchestration (see, for example, this tutorial).

Finally, while it's not full-fledged orchestration, Camel is integrated with ServiceMix and supports many Enterprise Integration Patterns that might otherwise require an orchestration engine to implement.

...

Are there any other development tools available?

If you're starting a new Maven project, there are Maven Archetypes available for many types of JBI and ServiceMix modules.

Those archetypes use a series of Maven plugins (which you can also use without the archetypes) to package a Maven project or module as a There are Maven plugins to package a Maven project or module as a JBI Service Unit or Service Assembly. For a walkthrough of using the Maven tools to create, build, and deploy a JBI application, see the Maven JBI Application Tutorial.

There are also more Maven options in case you're building a custom JBI service engine or binding component.If you're starting a new Maven project, there are also archetypes available for many types of JBI and ServiceMix modulesa custom JBI service engine or binding component.

Testing

What are the options for testing services during development?

...

Of course, you would want to coordinate changes to routing, transformation, or orchestration that depend on changes to the service's WSDL. (This is easiest for anything deployed in the same Service Assembly as the service in question.)

Note that if you want to support clients using different versions of a service WSDL, you can use Content-Based Routing and XSLT Transformations to send new requests straight through, but run old requests through an XSLT transformation first.

What options are available for building composite services (or business processes)?

...