Chapter 1. Red Hat JBoss Fuse Overview
Abstract
Red Hat JBoss Fuse is a flexible container that allows you to deploy applications in a range of different package types (FAB, WAR, OSGi bundle, or JBI SA) and has support for both synchronous and asynchronous communication.
1.1. Red Hat JBoss Fuse Container Architecture
Overview
Figure 1.1, “Red Hat JBoss Fuse Container Architecture” shows a high-level overview of the Red Hat JBoss Fuse container architecture, showing the variety of deployment models that are supported.
Figure 1.1. Red Hat JBoss Fuse Container Architecture
Deployment models
Red Hat JBoss Fuse is a multi-faceted container that supports a variety of deployment models. You can deploy any of the following kinds of deployment unit:
- OSGi bundle
- An OSGi bundle is a JAR file augmented with metadata in the JAR's
META-INF/MANIFEST.MF
file. Because the Red Hat JBoss Fuse container is fundamentally an OSGi container, the OSGi bundle is also the native format for the container. Ultimately, after deployment, all of the other deployment unit types are converted into OSGi bundles. - Fuse Application Bundle, FAB
- A Fuse Application Bundle (FAB) is a Fuse-specific deployment unit optimised for the JBoss Fuse container. FABs are a plain JAR built using the Apache Maven. FABs address some of the issues when using OSGi such as dependency resolution and class-loader conflicts. The FAB deployer in JBoss Fuse scans the metadata in the POM and automatically downloads any dependencies needed by the bundle.
- WAR
- A Web application ARchive (WAR) is the standard archive format for applications that run inside a Web server. As originally conceived by the Java servlet specification, a WAR packages Web pages, JSP pages, Java classes, servlet code, and so on, as required for a typical Web application. More generally, however, a WAR can be any deployment unit that obeys the basic WAR packaging rules (which, in particular, require the presence of a Web application deployment descriptor,
web.xml
). - JBI service assembly
- A Java Business Integration (JBI) service assembly is the basic unit of deployment for JBI applications. A discussion of the JBI container lies outside the scope of this document. For details, see "JBI Development Guide".
Spring framework
The Spring framework is a popular dependency injection framework, which is fully integrated into the JBoss Fuse container. In other words, Spring enables you to create instances of Java objects and wire them together by defining a file in XML format. In addition, you can also access a wide variety of utilities and services (such as security, persistence, and transactions) through the Spring framework.
Blueprint framework
The blueprint framework is a dependency injection framework defined by the OSGi Alliance. It is similar to Spring (in fact, it was originally sponsored by SpringSource), but is a more lightweight framework that is optimized for the OSGi environment.
OSGi core framework
At its heart, Red Hat JBoss Fuse is an OSGi container, based on Apache Karaf, whose architecture is defined by the OSGi Service Platform Core Specification (available from http://www.osgi.org/Release4/Download). OSGi is a flexible and dynamic container, whose particular strengths include: sophisticated management of version dependencies; sharing libraries between applications; and support for dynamically updating libraries at run time (hot fixes).
For more details about the OSGi framework, see Chapter 5, Introduction to OSGi.
Red Hat JBoss Fuse kernel
The JBoss Fuse kernel extends the core framework of OSGi, adding features such as the runtime console, administration, logging, deployment, provisioning, management, and so on. For more details, see Section 5.1, “Red Hat JBoss Fuse”.