Fuse ESB 4 still supports JBI, as described in Using Java Business Integration. However, because Fuse ESB 4 is based on OSGi, it provides additional flexibility. Fuse ESB 4 has the following layered architecture:
Technology layer—includes technologies such as JBI, JAX-WS, JAX-RS, JMS, Spring, and JEE
Fuse ESB kernel —a wrapper layer around the OSGi container implementation, which provides support for deploying the OSGi container as a runtime server. Runtime features provided by the Fuse ESB kernel include hot deployment, management, and administration features.
OSGi framework —implements OSGi functionality, including managing dependencies and bundle lifecycles
Figure 1.1 shows the architecture of Fuse ESB kernel.
Fuse ESB kernel is based on Apache Karaf, a powerful, lightweight, OSGi-based runtime container for deploying and managing bundles to facilitate componentization of applications. Fuse ESB kernel also provides native OS integration and can be integrated into the operating system as a service so that the lifecycle is bound to the operating system.
As shown in Figure 1.1, Fuse ESB kernel extends the OSGi layers with:
Console—extensible Gogo console manages services, installs and manages applications and libraries, and interacts with the Fuse ESB kernel runtime. See the Console Reference.
Logging—powerful, unified logging subsystem provides console commands to display, view and change log levels. See Configuring and Running Fuse ESB.
Provisioning—provides multiple mechanisms for installing applications and libraries. See Deploying Features.
Deployer—supports hot deployment of OSGi bundles. When you update or delete bundles, the changes are made automatically. See Hot Deployment.
Admin—provides console commands to administer instances of Fuse ESB kernel. See Configuring and Running Fuse ESB.
Spring DM—simplifies building Spring applications that run in an OSGi framework.
Blueprint—is essentially a standardized version of Spring DM. It is a dependency injection framework that simplifies interaction with the OSGi container—for example, providing standard XML elements to import and export OSGi services.