The Fuse ESB kernel 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 provides the following features:
- Console
Karaf can be administered via an extensible console shell that supports secure, remote access.
- Dynamic logging
A dynamic logging backend provided by Log4J supports different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi).
- Hot deployment
When a JAR file is added to the
folder, it is automatically installed inside the runtime.InstallDir
/deploy- Provisioning
Application provisioning through file-drop, Maven repository and remote download.
- Dynamic configuration
Changes to the properties files contained in the
directory are monitored and propagated to the relevant services.InstallDir
/etc- Security
Security framework based on Java Authentication and Authorization Service (JAAS).
OSGi is set of open specifications aimed at making it easier to build and deploy complex software applications. The key piece of OSGi technology is the OSGi Framework. The framework manages the loading and management of dynamic modules of functionality.
In an OSGi environment applications are packaged into bundles. A bundle is a JAR that contains extra information about the classes and resources included in the bundle. The information supplied in the bundle includes:
packages required by classes in the bundle
packages being exported by the bundle
version information for the bundle
Using the information in the bundle, the OSGi framework ensures that all of the dependencies required by the bundle are present. If it is, the bundle is activated and made available. The information in the bundle also allows the framework to manage multiple versions of a bundle.
The OSGi specifications are maintained by the OSGi Alliance. See http://www.osgi.org.
For more information about Fuse ESB's OSGi functionality see Deploying into the OSGi Container.
OSGi offers a number of benefits over other container and packaging models including:
Hot deployment of artifacts
Management of multiple versions of a package, class, or bundle
Dynamic loading of code
Lightweight footprint
Multiple packaging options