OpenESB

OpenESB is a Java-based open-source enterprise service bus. It can be used as a platform for both enterprise application integration and service-oriented architecture. OpenESB allows developers to integrate legacy systems, external and internal partners and new development in business processes. It supports a multitude of integration technologies including standard JBI (Java Business Integration), XML with support for XML Schemas, WSDL, and BPEL with the aim of simplicity, efficiency, long-term durability, and low TCO (Total Cost of Ownership).

It used to be owned by Sun Microsystems, but after Oracle and Sun Microsystems merged (see: Sun acquisition by Oracle), the OpenESB Community was created to maintain, improve, promote and support OpenESB.

Architecture

OpenESB consists of 5 parts: the framework, the container, the components, the Integrated Development Environment and the development plugins.

/images/wiki/458337/474c26371e26ccfc7cc651f6b46564a1.jpg /images/wiki/458337/845538b0da04372dd87b6f07bd2deb63.jpg

Framework

The framework consists of a lightweight JBI implementation in Java. This implementation is container-agnostic and can work on any platform and any container. Even if development and support are mainly focused on Glassfish V2 and V3 platforms, beta projects on JBoss and standalone JVM work well and are in progress (2012 Q2). In addition to the OpenESB framework being lightweight, it is also reliable and highly scalable. It is embedded in a Java virtual machine and communicates with other framework instances through Binding components. This architecture matches perfectly with new cloud architectures and allows easy deployment and management on very complex infrastructures. The framework is fully manageable with any JMX-based tool such as Jconsole or more sophisticated tools like Opsview or Nagios.

The framework implements a virtual bus known as the Normalised Message Router (NMR). This is a powerful asynchronous intelligent communication channel between components.

Components

The JBI specification defines 2 component types: The services engine (SE) and the binding component (BC). The SE and BC implement the same interface contract, however, they behave differently:

- Binding components act as the interface between the outside world and the bus, being able to generate bus messages upon receipt of stimuli from an external source, or generate an external action/interaction in response to a message received from the bus.

- Service engines receive messages from the bus and send messages to the bus. SE's have no direct contact with the outside world. They rely on the bus for interaction with other components, whether binding components or other service engines.

OpenESB includes many Components 'out of the box'.

OpenESB Binding Components

Binding Component Name

Description

Supported

HTTP BC

Sends and receives messages through HTTP (get, post,...)

Yes

SOAP BC

Sends and receives SOAP messages through HTTP

Yes

FTP BC

Sends and receives messages from and to FTP servers

Yes

Database BC

Full access to Database through JDBC

Yes

JMS BC

Sends and Receives messages from and to JMS Brokers

Yes

LDAP BC

Full Access to LDAP server

Yes

Email BC

Receives message from POP, IMAP servers and send messages to SMTP server

Yes

REST BC

Exposes and Invokes services through REST channel

Yes

HL7 BC

Used to communicate with Healthcare applications using the HL7 protocol

Yes

TCP/IP BC

Use TCP/IP to send and receive messages

Yes

Scheduler BC

Scheduler based on Quartz to trigger any business process

Yes

Bespoke BC

You can develop your own Binding component

On demand

OpenESB Service Engines

Service Engine Name

Description

Supported

BPEL SE

Highly scalable orchestrator based on BPEL 2.0.

Yes

XSLT SE

Embedded XSLT in Business processes

Yes

IEP SE

Intelligent Event Processor

yes

POJO SE

Transform any Java class into an OpenESB component

Yes

JEE SE

Transform any EJB or Servlet into an OpenESB component

Yes

WLM SE

Provides task management and human intervention in a business process

On demand

ETL SE

ETL for OpenESB

On demand

Bespoke SE

You can develop your own Service engine

Yes

Integrated Development Environment & Plugins

OpenESB offers a set of graphical tools to visualize complex SOA and integration developments. XLM, XML Schema, WSDL, BPEL editor, data mapping and Composition Applications graphical editors are proposed with OpenESB. Similarly, build, deploy, un-deploy, run, test and debug tasks are managed by graphical tools.

/images/wiki/458337/5c88eac90cde0838f9c7f4439be80033.jpg /images/wiki/458337/3517ccdb9ae6b3daea6c8b82af6ae992.jpg /images/wiki/458337/2db0641b63d6d781f8f996e890fac690.jpg /images/wiki/458337/73d32748eb9b88ef3b91ae1d79cc0c02.jpg /images/wiki/458337/f6445af22864ca5f3822672c62989e65.jpg /images/wiki/458337/202483d8a4a7142b6b204f36d20eeb1d.jpg

Container

OpenESB V3.1.2 does not use any container but just a JVM. So, its memory footprint is very low (less than 300 Mo) and allows OpenESB to run in a Raspberry PI or in a many instances on a cloud. Next versions are planned for 2019.

OpenESB community

The table below lists the web sites and forum managed by OpenESB community

Web site

Description

Community portal

Info, Event Download, Documentation, Blog, Forum...

Sources repository

All source code and builds: registration required

OpenESB community forum

Technical forum with thousands of posts

OpenESB LinkedIn group

Discussions on OpenESB

See also

References

Java Business Integration

JBI specification