Java Business Integration

Petals ESB is a platform that implements the JBI specification.
JBI stands for Java Business Integration. This page describes this specification and its main concepts.
For more advanced details, please refer to the specification.

The JBI specification has been standardized by the Java Community Process (JCP) expert group in the JSR208 document.
The specification defines a standard means for assembling integration components to create integration solutions that enable a SOA in an enterprise information system.

Contributors
No contributors found for: authors on selected page(s)

Environment

Components are plugged into a JBI environment and can provide or consume services through it in a loosely coupled way. The JBI environment then routes the exchanges between those components and offers a set of technical services. JBI is built on top of state-of-the-art SOA standards : service definitions are described in WSDL format and components exchange XML messages in a document-oriented-model way.

The central part of the JBI specification is the Normalized Message Router (NMR), described as the "JBI Environment" in figure above. The NMR ensures loosely coupled communication by providing standard Service Provider Interfaces (SPI) that promote the exchange of XML documents between plugged JBI components and loose references via the use of their interface name.

JBI Artifacts

The JBI specification defines a set of artifacts which are used to add connectivity, bind/expose services and configure the Service Bus.

The main artefacts are the JBI components which are divided in two families :

  • Binding Components (BC) are "connectors" which are used to interface the JBI bus with the rest of the Information System (Green boxes in figure above). Binding Components enable both the exposure of external resources in the bus and the exposure of services available on the bus for their use by external consumers: e.g. connections to Web services, FTP, Mail, Message-Oriented Middleware, or even standard business communications like EDI or ebXML.
  • Service Engines (SE) provide the integration logic (Blue boxes in the figure above). They typically handle messages that pass through the bus in order to provide routing (e.g. content-based routing, priority-based routing), transformation (XSLT), orchestration (BPEL), log or audit features.

In order to activate endpoints in the JBI environment, artifacts named Service Units (SU) must be deployed on the JBI component (both BC and SE). The SU contains configuration file which are used by the JBI component consume or provide a JBI service. A SU has two modes:

  • Consumer : The component on which the SU is deployed on will consume the service described in the SU configuration file.
  • Provider : The component on which the SU is deployed on will provide the service described in the SU configuration file.

Service Units are packaged in artifacts named Service Assembly (SA). The SA can contain a collection of SU plus a configuration file which describe on which component each SU must be deployed.

The last artefact defined in the JBI specification is the Shared Library (SL). The SL is an artefact which can be shared between JBI components. The components will potentially use the Java libraries and resources bundled in the SL to create their class loaders.

In this document, a JBI artefact will refer to the previously detailed items. More details on Binding Components, Service Engines, Service Units, Service Assemblies, Shared Libraries, their lifecycles and usage are described in the JBI specification.

Messages

The atomic JBI message, also called Normalized Message, is composed of a XML payload, attachments (binary data) and key-value properties (also view as message context). A JBI message transits between service consumer and provider in a Message Exchange. A Message Exchange contains an input Normalized Message, a set of key-value properties and potentially:

  • An output Normalized Message representing the service invocation response. This depends on the Message Exchange Pattern (MEP) used to invoke the service.
  • A Fault (extension of a Normalized Message) when something wrong occurs on the service side.
  • A Pattern
  • A Status

The Message Exchanges can be classified by patterns (inspired by the WSDL 2.0 specification); we talk about Message Exchange Pattern (MEP):

  • InOnly: This pattern is used for one-way exchanges
    • The service consumer sends a message
    • The service provider replies by an aknowledge
  • InOut: This pattern is used for two-way exchanges.
    • The service consumer sends a message
    • The service provider reploies by a message or a fault
    • The service consumer acknowleges
  • InOptionalOut: This pattern is used for a two-way exchange where the provider's response is optional
    • The service consumer sends a message
    • The service provider can send back a response, a fault or just an acknowledgement. The consumer:
      • Acknowledges the response
      • Or sends a fault, in this case the provider must acknowledge this fault
      • Or acknowledges the initial fault
  • RobustInOnly: This pattern is used for reliable, one-way message exchanges
    • The service consumer sends a message
    • The service provider acknowledges or send back a fault
    • If a fault is returned, the service consumer acknowledges

More details on section 5.4.2 of the JBI specification.

Delivery channel

The Delivery Channel (DC) is the interface between the components and the Normalized Message Router:

  • The consumer (a JBI component) sets the message exchange (payload, attachments and properties) and send the message to the delivery channel
  • The message bus is in charge of transmiting the message to the component which is providing the requested service
  • The provider (a JBI component) receives the message exchange from its delivery channel and processes the message. Depending on the message pattern, a response, fault or acknowledgement can be set in the message exchange. The message exchange is then sent back to the consumer through the delivery channel.
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.