What Is Fuse?



JBoss Fuse is an Open source ESB solution by Redhat. It is an enterprise solution based on community project, Apache Servicemix.

Integration to Fuse

JBoss Fuse is a lightweight and flexible integration platform which allows rapid integration of enterprise applications.

Fuse was initially developed by Progressive software Inc. which was acquired by Redhat in 2012. JBoss Fuse 6.1.0.redhat-379 GA is a stable version of Fuse which can be downloaded from their official website.

Architecture

Fuse combines various technologies together as a single product.

Architecture

Components

Apache CXF

Apache CXF is an open source web services development framework which also supports development of SOAP & Rest web services.

Apache Camel

Apache Camel is a EIP based integration framework. EIP or Enterprise Integration patterns are identified solutions to the recurring problems in Enterprise Integration. Complete integration solution can be achieved meteorically with combinations of these pre-defined out of the box patterns.

It allows to write routing logic in several Domain Specific Languages like Java, Spring DSL, and Scala etc.

Apache AMQ

Apache AMQ is a JMS which provides reliable messaging system as per JMS standards. It not only support JMS specification but also provides some exciting and useful features which are not included in JMS specifications.

Apache Karaf

Apache Karaf is lightweight OSGi container which acts as runtime for the artifacts. Apache Karaf is more dynamic in nature as compared to JVM. It allows to install or uninstall modules at runtime. All the artifacts in Fuse are deployed in Karaf.

Fabric

Fabric provides easy way to manage deployments of artifacts in a large and distributed environment. It provides centralized management for all multiple fuse instances.

Installing Fuse

Installing Fuse is quite simple. Like other JBoss products, Fuse comes as a zip file that can be extracted and after some minor configuration changes it can directly be started.

Installing Fuse is a four step process −

Download

Download Fuse 6.1.0 GA from the following link. https://www.jboss.org/

Unzip

Like all the other JBoss products, Fuse is also a platform independent zip.

Unzip the downloaded file into the destination directory you want to be the Fuse installation directory. Choose this directory wisely as this should remain same over the lifetime of Fuse instance.

Note − Even though Fuse unzips and starts like other JBoss products, it is not recommended to move Fuse installation from one location to another location after installation is complete.

Configure

After you unzip Fuse, you will find the following directories inside the extracted Directory −

  • bin
  • etc
  • deploy
  • lib
  • licenses
  • extras
  • quickstarts

Out of which we are going to use only two directories bin & etc.

Virtually after extracting Fuse, we should be able to start fuse directly, but this will start Fuse with all the default configurations which is not advisable for production environment. It is strongly recommended to do the following changes before starting Fuse.

Set Environment variables

  • Set the following Environment variables − JAVA_HOME

  • The variable should point to the java installation directory − M2_HOME

  • The variable should point to Maven installation directory − PATH

  • Set the path variable to include Java & Maven executables.

Windows

On windows, settings can be done by following the below given instructions −

Start → My Computer → Right Click → Properties → Advanced System settings → Environment variables.

UNIX & Clones

For each user there is a bash profile in the *nix operating systems. We can add or edit the existing system variable by changing this file.

$ vi ~/.bash_proflle

Note − Any changes in this file are permanent. It is highly recommended to take a backup of the existing file before changing the original.

Basic Configuration

We will discuss about the basic configuration of JBoss Fuse and for that we have to start with the following command Edit $FUSE_INSTALLATION_DIR/etc/

  • In user.properties

    • #admin=admin,admin

    • This needs to be changed according to the first admin with username we want, second admin with password, third one might be kept as it is because it indicates a role and don’t forget to remove #

    • For example – FuseAdmin = FusePAss,admin

Basic Configuration
  • In System.properties

    • karafName = root

      • This indicates the name you want to give to Karaf instance.

      • We can name it anything we want like Cont1.

      • Make sure this name you give is unique name and not already being used by another instance of Fuse.

  • In org.ops4j.pax.web.cfg

    • Org.osgi.service.http.port = 8181

    • This property indicates the port that is to be used for accessing browser-based interface HAWTIO provided by Fuse

    • HAWTIO is an in-built browser interface to Fuse which is available from 6.0 onwards

  • In org.ops4j.pax.url.mvn.cfg

    • org.ops4j.pax.url.mvn.localRepository = D:/repository

    • This property indicates the path to localRepository of our Maven from where Fuse will install its artifacts.

    • org.ops4j.pax.url.mvn.settings = D:/Maven/conf/settings.xml

    • This property indicates settings.xml which Fuse should use to get artifacts from Maven.

Configuring Maven

Maven is a prerequisite for installing Fuse. If you don’t know what maven is please refer to https://www.tutorialspoint.com/maven/

Maven is a built tool used for building Fuse artifacts. Fuse first searches in Maven local repository for artifacts when we issue command to install artifact. So we must let Fuse know where Maven is installed and the path of Maven’s local repository.

Edit $FUSE_INSTALLATION_DIR/etc/org.ops4j.paxurl.mvn.cfg

Update the following two properties −

  • org.ops4j.pax.url.mvn.settings = $M2_HOME/conf /settings.xml
  • org.ops4j.pax.url.mvn.localRepository = $local_repo

Note − Please change $local_repo with the actual path of your local repository mentioned in Mavens settings.xml.

Run

After doing basic configuration changes, we can now start Fuse. All the binary files to work with Fuse are located in $FUSE_INSTALLATION_DIR.

There are two ways to start Fuse −

  • Using ./fuse

    • This will allow you to see all the progress and logs on the same window in which you started Fuse.

    • It will give you Karaf console in the same terminal as shown below.

Note − This will start fuse in console mode which means Fuse process will also be stopped when user logs out from session or closes Terminal which is not desirable in production or development scenario. This script should be used only for debugging Fuse.

  • Using ./start

    • This won’t show any logs on screen not even the progress but this will start Fuse in background and Fuse service won’t be stopped when user exits session or closes terminal.

    • In the real world Application, this type of behavior is desired. Fuse should be running in the background even if we close the terminal.

    • If you want to connect to Fuse running in the background, you can use client script which is located in the same folder.

    • You should get the display as shown in the following screenshot.

    • Exiting from client script won’t stop Fuse service. It will just close the Fuse console.

Configuring Maven

HAWTIO

Fuse also provides complete GUI access to it using FMC (Fuse management console). You can find GUI on below URL http://localhost:8181.

HAWTIO

Everything we did by executing commands can also be done by accessing this browser-based GUI. It becomes extremely helpful when we have more than one container and we are running in a Fabric environment.

Advertisements