As shown in Figure 1, Fuse ESB Enterprise employs a layered architecture that consists of:
Kernel layer
A lightweight runtime that provides management features for the runtime and extends OSGi with powerful features for handling and managing OSGi bundles.
For details, see The Kernel Layer.
Services layer
A layer of embedded services that sits on top of the kernel layer. Each service consists of the interfaces and service implementations required to create an instance of its specific service.
For details, see The Services Layer
Application layer
The layer that hosts user-developed applications and sits on top of the services layer. Fuse ESB Enterprise provides numerous APIs that make it easy for user-developed applications to interact with services embedded in the Services layer.
For details, see The Application Layer
The Fuse ESB Enterprise kernel layer is based on Apache Karaf, an OSGi-based runtime that provides a lightweight container into which you can deploy various components and applications.
The kernel layer interacts with the Services layer to set up, coordinate, and manage logging,
and security; and to manage transactions on a per service basis. It also interacts with the
Service layer to set up message broker instances with the configuration specified in the
supplied activemq.xml file.
The kernel provides these features:
Console
The Fuse ESB Enterprise console is a shell environment that enables you to configure all Fuse ESB Enterprise components and to control the Fuse ESB Enterprise runtime, including brokers and messages, Fuse ESB Enterprise kernel instances, logging, and so on.
For example, using the console subshells, you can manage artifacts deployed in the Fuse ESB Enterprise runtime, including OSGi bundles, collections of bundles grouped into features, JBI artifacts, and OSGi bundle repositories (OBRs). Using the
sshandsshdcommands, you can connect to and start a remote secure shell server to manage multiple, distributed instances of the Fuse ESB Enterprise runtime.See Using the Command Console in Console Reference for details on using the console and for descriptions of the available commands.
Logging
A dynamic logging back end supports different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi). By default, Fuse ESB Enterprise enters all log messages in a single log file, but you can change this behavior by configuring different log files to store log messages generated by specific Fuse ESB Enterprise components.
Deployment
You can manually deploy applications using the
osgi:installandosgi:startcommands, or you can automatically deploy them by copying them to the hot deploy folder. When a JAR file, WAR file, OSGi bundle, or FAB file is copied to thefolder, it's automatically installed on-the-fly inside the Fuse ESB Enterprise runtime.InstallDir/deployFor details, see Hot Deployment in Deploying into the Container.
Fuse Application Bundle (FAB)
FABs automate the creation and maintenance of OSGi bundles, freeing application developers to focus on building their applications.
See FABs in a nutshell. See also, Building a FAB in Deploying into the Container and Deploying a FAB in Deploying into the Container.
Provisioning
Applications are provisioned through hot deployment, the Maven repository, and remote downloads.
For details, see Deploying an OSGi Bundle in Deploying into the Container.
Configuration
The properties files contained in the
directory are continuously monitored, and changes are automatically propagated to the relevant services at configurable intervals.InstallDir/etcFor details, see Managing and Monitoring a Broker.
Security
The security framework is based on Java Authentication and Authorization Service (JAAS). You can secure separately, Fuse ESB Enterprise's OSGi container, deployed instances of the embedded messaging service, and deployed instances of the embedded routing and integration service.
For details, see Security Architecture in Security Guide.
OSGi container
For a brief description of OSGi, see OSGi in a nutshell. You can deploy a variety of packages and files into Fuse ESB Enterprise 's OSGi container: FABs, OSGi bundles, Jars, Wars, Blueprint, Spring, JBI, and so on.
Fuse ESB Enterprise supports the Apache Felix Framework, which is an OSGi 4.2 compliant container.
The OSGi specifications are maintained by the OSGi Alliance. See OSGi.org.
For more information about Fuse ESB Enterprise's OSGi functionality see Introduction to OSGi in Deploying into the Container.
Dependency injection frameworks
The supported dependency-injection frameworks facilitate deploying new OSGi applications and updating existing ones dynamically:
Blueprint
An OSGi specification, Blueprint is optimized for the OSGi container. It enables you to define Camel routes, JMS endpoints, Web service endpoints and OSGi services using XML syntax. OSGi is similar to the Spring framework, but more lightweight.
Spring
Adding any Spring configuration file to the
deploydirectory causes Fuse ESB Enterprise to generate an OSGi bundle on the fly and to instantiate the Spring application context.
The Fuse ESB Enterprise services layer consists of all of the interfaces and implementation classes for each of the embedded services. It interacts with the application layer to communicate with user-developed applications that want to access and use these services.
Messaging
Using Fuse ESB Enterprise's messaging service, based on Apache ActiveMQ, you can create JMS message brokers and clients, then deploy them as OSGi bundles.
Fuse ESB Enterprise comes with a default message broker that autostarts when you start up Fuse ESB Enterprise, but you can replace it with your own message broker implementation. For details, see JMS Broker in Deploying into the Container.
For more information on the messaging service, see The Embedded Messaging Service and JMS Broker in Deploying into the Container.
Routing and integration
Using Fuse ESB Enterprise's routing and integration service, based on Apache Camel, you can define routes and implement enterprise integration patterns, then deploy them as OSGi bundles.
For more information, see The Embedded Routing and Integration Service and Generating and Running an EIP Bundle in Deploying into the Container.
Web services
Using Fuse ESB Enterprise's web services framework, based on Apache CXF, you can create JAX-WS web services, then deploy them as OSGi bundles.
For more information, see The Embedded Web and RESTful Services and Generating and Running a Web Services Bundle in Deploying into the Container.
RESTful services
Using Fuse ESB Enterprise's RESTful services framework, based on Apache CXF, you can create JAX-RS web services, then deploy them as OSGi bundles.
For more information, see The Embedded Web and RESTful Services and Generating and Running a Web Services Bundle in Deploying into the Container.
JBI
Using Fuse ESB Enterprise's JBI service you can create and deploy Java Business Integration (JBI) 1.0 service assemblies and service units in Fuse ESB Enterprise. See Introduction to JBI in Using Java Business Integration for an introduction to Fuse ESB Enterprise's JBI environment.
![[Tip]](imagesdb/tip.gif)
Tip Using OSGi and Fuse ESB Enterprise's embedded routing and integration service is strongly recommended. OSGi provides many deployment advantages over JBI (see Introduction to OSGi in Deploying into the Container).
Transaction Manager
Fuse ESB Enterprise's transaction framework employs a JTA transaction manager, based on Apache Aries, to expose various transaction interfaces as OSGi services. The transaction manager enables you to create and deploy JTA-based or Spring-based transacted applications in Fuse ESB Enterprise. Both the embedded messaging service and the embedded routing and integration service provide easy means for interacting with the transaction manager to implement JMS transactions.
See JMS transactions and XA transactions.
Normalized Message Router (NMR)
The Fuse ESB Enterprise NMR is a general-purpose message bus whose primary role is to transmit messages between the various application bundles deployed into the OSGi container. In this case, no normalization is required because OSGi places no restrictions on the format of message content.
However, when the JBI container is also deployed, the NMR is also used to transmit messages between OSGi and JBI applications. Normalization must be performed on messages transmitted to a JBI endpoint, because JBI requires that message content be formatted in XML, as defined in a WSDL service description.
Fuse ESB Enterprise provides a simple Java API for creating NMR endpoints that receive and process messages from the NMR and for writing clients that send messages to NMR endpoints. For more information, see Introduction to JBI in Using Java Business Integration.
In addition, Fuse ESB Enterprise's routing and integration service provides the
nmr:component to define NMR endpoints for the OSGi container and thejbi:component to define NMR endpoints for the JBI container. For details, see Inter-Bundle Communication with the NMR in Deploying into the Container.
The Fuse ESB Enterprise application layer is where user-developed applications reside. Fuse ESB Enterprise provides many APIs with which you can create client and service applications that access and use the embedded services running within Fuse ESB Enterprise. For details, see:
Messaging—Client-side APIs
Routing and integration—Overview
Web and RESTful web services—Front end options.









