People often ask me what is JBI, whom and how does it help? In this post I will try to answer briefly by contrasting custom built solution with solution leveraging JBI standard components.
Most of the businesses, big and small, need to communicate with other businesses for various reasons. Each business has their own preference for type of hardware/server, operating system and programming language they use. In order to integrate with other businesses, they need to agree on the message, document or file format and the transport protocol they use, to exchange them.
The diagram below depicts what a custom built solution may look like.

Note each business process implementation is tightly coupled with transport specific and business logic component, it is interacting with. Business integration developers most likely have invested significant amount of time in developing their own transport specific component or customizing/writing wrapper code for readily available transport specific component. Adding or removing additional transport support or internal service call is not trivial.
Compare the above solution with the solution built using JBI standard based components below.
JBI, Java Business Integration is a specification developed under Java Community Process. It specifies how the JBI components aka container are to be implemented, which hosts either business logic units or transport/adapter specific logical units. There are two types of JBI components, Service Engine (SE) and Binding Component (BC). WSDL is used to define contract between components, thus de-coupling JBI components from each other.
This lets you assemble components, substitute/replace business logic implementation in one component/service unit with another. Reduces complexity, effort and time required to implement business integration solutions.
Java.net project OpenESB is based on the runtime and components implementing JBI specification.
