Open Source ESB

Open Source ESB

Home
Online JavaDocs

Introduction

osESB is a free, open source Enterprise Service Bus (ESB) designed to run inside a Java 2 Enterprise Edition (J2EE) application server.

osESB applications are configured to implement business services in a Service Oriented Architecture or process events in an Event Processing Architecture.

osESB encourages document style interactions. In this context, we mean document-style in a protocol independent sense. So, osESB interactions are represented by

responseMessage = f(requestMessage)

where requestMessage and responseMessage are XML messages, possibly with attachments, and f() represents processing of the message by the ESB.

osESB uses components called transport handlers as the entry points for messages sent to osESB. osESB includes ancestor classes for SOAP, JMS, and SOAP over JMS transports. All transport handlers support XML messages, possibly with attachments, for both requests and replies. Transport handlers are implemented as EJB-backed web services or Message Driven Beans.

Message processing is implemented by a component called a MessagePipeline, which processes a message and possibly produces a result. A MessagePipeline is a collection of PipelineStages that operate on messages in order to produce a new message or create a side-effect in an application such as a database. A MessagePipeline also includes a MessagePipelineContext, which is a scratch pad area that can hold any object. The MessagePipelineContext is accessible by any PipelineStage.

osESB includes 30+ built-in PipelineStage(s). Out-of-the-box, osESB includes PipelineStages for:

 

  • Database interactions, including ResultSet to XML transformation
  • XSLT transformations
  • Web Services interactions
  • Flat file to XML transformation
  • Interaction with JMS providers
  • XML validation against schemas
  • Interaction with FTP and SMTP servers
  • Rules-based, XML data validation
  • Interaction with file systems
  • Manipulation of XML using XPath
  • Parsing XML messages into DOM Documents
  • Application of Drools Rules to XML messages

The osESB also includes the following non-functional pipeline stages:

  • FlowControlPipelineStage, which configures a set of MessagePipelines for programmer-controlled or rules-based execution. MessagePipelines can be run sequentially or in parallel.
  • A XML element propagation pipeline stage, which uses XPath to extract elements from an incoming XML message and then propagates the extracted elements to subsequent stages for processing.

osESB uses a component called a MessageRouter to determine the MessagePipeline that will process an incoming message. MessageRouters connect transport handlers to MessagePipelines. MessageRouters select the MessagePipeline that will process the incoming message based on a message type. In osESB, a message type is represented as a javax.xml.namespace.QName, which is composed of a namespace URI and a local part. Transport handlers can be deployed with MessageRouter configurations that implement the following message routing strategies:

  • static message routing
  • simple content-based routing based on a XML namespace and the value of a single element or attribute
  • complex content-based routing based on a configured Drools rule that derives a message type using a XML namespace and a combination of multiple element and attribute values
  • custom content-based routing

Contact

Send questions or comments to info@osesb.org

Release Notes

This initial release of osESB includes most of the core components and features needed to implement an ESB. The following features are scheduled for future releases of osESB:

  • A guaranteed delivery subsystem will extend the fault-tolerant features that are part of connection-oriented components such as JMS clients, SOAP clients, and JDBC connectors.
  • A message throttling and deferred processing subsystem will extend the guaranteed delivery subsystem in order to add support for balanced loading strategies and scheduled down time of target applications.
  • Message audit facilities will support configurable strategies for logging usage and performance statistics to a database.
  • The existing error processing facilities will be extended to include support for configurable strategies for logging errors to a database.