HelloWorld JBoss Fuse on Karaf

In this tutorial we will move our first steps with Red Hat JBoss Fuse, we will learn What is JBoss Fuse, how to install it and we will run a first demo application on it.

What is JBoss Fuse ?

In a nutshell Red Hat JBoss Fuse is an open source enterprise integration platform and service bus. The following picture introduces the core building blocks of JBoss Fuse:

hello world jboss fuse

So basically JBoss Fuse is an integration platform which includes some best of breed integration producst from Apache such as Apache CXF and Apache Camel, a robust messaging platform, Active MQ and a container based on the project Apache Karaf and Fabric.

The nice thing is that you can design your integration services using a tooling platform named JBoss Developer studio and use a variety of management console (including the Fuse Management Console) to administrate your services.

Installing JBoss Fuse

Installing JBoss Fuse is pretty easy, just reach the download page. Once downloaded, unzip the full installer

unzip jboss-fuse-6.1.0.GA-full_zip.zip

Now you can start JBoss Fuse:

cd jboss-fuse-6.1.0.redhat-379 bin\fuse.bat

Once started the JBoss Fuse shell (based on Apache Karaf) console will display:

jboss fuse tutorial

The first usage of the console will be creating an admin user for accessing the Web Console, which is available at:

In the Fuse shell execute the following command:::

esb:create-admin-user

And type in a username and password.

Deploying your first example on JBoss Fuse

The JBoss Fuse supports multiple deployment models. This means that you can deploy the following artifacts on the top of it:

  • OSGi bundle: Since Red Hat JBoss Fuse container is fundamentally an OSGi container, the OSGi bundle is the native format for the container. An OSGi bundle is a JAR file augmented with metadata in the JAR’s META-INF/MANIFEST.MF file.
  • Fuse Application Bundle: 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.
  • WAR: A Web application ARchive (WAR) is the standard archive format for applications that run inside a Web server.
  • JBI service assembly: A Java Business Integration (JBI) service assembly is the basic unit of deployment for JBI applications.

We will deploy an OSGi quickstart example that is based on the 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.

As this example uses Apache CXF features, we will activate Apache CXF by executing the following command in the Fuse shell:

features:install cxf

Now let’s move into the SOAP quickstart example:

cd C:\jboss-fuse-6.1.0.redhat-379\quickstarts\soap 

This demo basically contains a blueprint file and a simple JAX-WS Web service. Here is the blueprint file which is used to integrate Fuse with the Web service:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"            xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws"            xmlns:cxf="http://cxf.apache.org/blueprint/core"            xsi:schemaLocation="       http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd       http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd">       <cxf:bus>           <cxf:features>             <cxf:logging/>         </cxf:features>     </cxf:bus>       <jaxws:endpoint id="helloWorld"                     implementor="org.jboss.quickstarts.fuse.soap.HelloWorldImpl"                     address="/HelloWorld"/>  </blueprint>

Now build the example with: (Maven required)

mvn clean install

Finally install the example by executing the osgi:install command in the Fuse shell, passing as argument the Maven dependency that you have just built:

osgi:install -s mvn:org.jboss.quickstarts.fuse/soap/6.1.0.redhat-379

The above command will return the ID of the bundle that has been just installed. You can check that everything is ok by issue the command:

osgi:list

Your bundle should be present at the end of the list:

. . . . . [ 252] [Active     ] [Created     ] [       ] [   60] JBoss Fuse :: Examples :: SOAP (6.1.0.redhat-379)

After you deployed this quick start, you will see the ‘HelloWorld’ service appear in the ‘Available SOAP Services’ section, together with a list of operations for the endpoint and some additional information like the endpoint’s address and a link to the WSDL file for the web service

http://localhost:8181/cxf

fuse hello world demo

You can use an external tool such as SoapUI to test web services or Change to the soap directory and run the following command:

mvn -Ptest