Java Business Integration (JBI) es una especificación desarrollada bajo la Java Community Process (JCP) con el objetivo de implementar en Java una Enterprise Application Integration (EAI), siguiendo los principios de la Arquitectura Orientada a Servicio (SOA). La referencia JCP fue la JSR 208 para JBI 1.0 y la JSR 312 for JBI 2.0.
JBI proporciona una arquitectura en la que los componentes aparecen en forma de plug-in´s conectados a contenedores JBI y actuando como proveedores de servicio o consumidores de servicio, aunque este rol puede intercambiarse o incluso combinarse. Está construido teniendo en mente los Servicios Web, aunque no son estrictamente necesarios para su funcionamiento. Los componentes, según su función pueden ser de dos tipos:
- Service engines (Motores de servicio). Manejan la lógica de negocio. Pueden implementar procesos de negocio (por ejemplo, mediante servicios Web con POJOs anotados), consumir otros servicios, transformaciones de datos, etc.
- Binding components (Componentes de vinculación[1]). Se usan para enviar y recibir mensajes a través de transportes y protocolos particulares, que por tanto nada tienen que ver con la especificación de mensajes de JBI. Pretenden aislar al entorno JBI del heterogéneo exterior, normalizando los mensajes entrantes y denormalizando los mensajes salientes, garantizando que en el interior se trabaje únicamente con mensajes normalizados. Esta funcionalidad permite que JBI pueda alcanzar servicios que no cumplen esta especificación, o al contrario, que sistemas externos puedan consumir servicios JBI de forma transparente.
El modelo usado para describir los servicios, uno de los fundamentos SOA, es Web Services Description Language (WSDL) 2.0. Además se usa el mismo modelo para realizar las invocaciones de servicio. El mecanismo central de gestión de estos mensajes, el Normalized Message Router (NMR), despacha los mensajes normalizados que le llegan, enviándolos al componente adecuado. El hecho de que el NMR actúe como mediador entre los componentes garantiza que el acoplamiento entre ellos sea muy débil, de manera que éstos sólo se preocupan de que el mensaje sea adecuado para el NMR, y por ello simplifican enormemente la interacción entre consumidor y proveedor. La comunicación se realiza mediante uno de los cuatro tipos de patrones de secuencias soportados, los Patrones de Intercambio de Mensajes, o Message Exchange Patterns (MEPs):
Para manejar las necesidades de JBI que tienen que ver con la instalación, despliegue, monitorización y control del ciclo de vida de los componentes, se usa el estándar de administración para java, las Java Management eXtensions (JMX). JBI define además la manera en que deben empaquetarse los componentes, permitiéndoles ser utilizados en cualquier implementación de JBI sin realizar ningún cambio sobre ellos.
Los siguientes son implementaciones open source de ESB basadas en JBI:
Realmente, las implementaciones certificadas por el TCK, el Technology Compatibility Kit, son Sun/Open ESB y OW2/PEtALS.
Además, el proyecto GlassFish, un servidor de aplicaciones Java EE, incorpora el runtime JBI del proyecto Open ESB.En las últimas versiones del SDK Java EE se incluye el runtime JBI y un motor BPEL.
El proyecto Open JBI Components (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). acoge desarrollos de componentes JBI que conforman la especificación Java Business Integration (JSR 208).