Monday, July 3, 2017

The First Look at Red Hat JBoss Fuse

Hello everyone!

Today I wish to share an absolutely new thing in my blog, my impressions from using Red Hat JBoss Fuse.

What exactly is Red Hat JBoss Fuse? It is a runtime environment for an implementation of Enterprise Application Integration Patterns (EIP) - Apache Camel.


There are two available forms of the runtime environment:

  • Apache Karaf - a production ready implementation of the OSGi standard.

  • Red Hat JBoss Enterprise Application Platform - a well known open source Java EE application server with commercial support. Unfortunately, Red Hat JBoss Fuse can be installed only on top of the 6.4.0 version of the application server; this version implements Java EE 6 only and this fact makes some problems discussed below.

There is an Integration Development Environment (IDE) based upon Eclipse SDK - JBoss Developer Studio Integration Stack. The IDE provides superior Apache Camel editing as well as development projects for jBPM, SwitchYard and OpenShift, a container application platform that brings docker and Kubernetes to the enterprise.


The IDE contains a WYSIWYG editor for Camel Spring and Blueprint DSL as well as server connectors for different versions of JBoss EAP and WildFly.

I prepared numerous simple projects based upon the ESB to demonstrate some basic use cases. The projects are published on GitHub.

  • fuse-camel-course-eap-spring-archetype - this maven archetype contains a template Apache Camel RESTful web-service for JBoss EAP.

  • fuse-camel-restlet-eap - a template Apache Camel RESTful web-service for JBoss EAP.

  • fuse-camel-ws-eap - a template Apache Camel SOAP Web-Service for JBoss EAP.

  • fuse-camel-services-flow-eap - an Apache Camel RESTful web-service exposes a simple flow (Spring DSL is in use) for JBoss EAP. One RESTful and one SOAP-based web-services are invoked within the flow. The exception handling mechanism also is outlined.

The list might be expanded, some new projects which involve JDBC or Hibernate/JPA into Apache Camel based flows are under construction.

At the end, let me share my personal impression. You can read many positive comments about Apache Camel and JBoss Fuse on the Internet, the project is very interesting since the ESB is based upon a number of well-known Open Source components and anyone familiar with the Apache Camel library can very quickly start the development process using this product. Instead, I wish to share what seems like controversial things. Most of my comments are about the based on JBoss EAP implementation.

  • The JBoss EAP 6 implements only an outdated specification, Java EE 6; at the same time, the service bus heavy uses few components depended from Java EE 7 and JAX-RS 2.0, for example CXF 3.1. In that regard, you may face some issues during deployment your applications on the server, mostly related to ClassNotFoundException. The problems can be fixed only by manually changes of the server's installation files; these changes exactly make the installation unsupported by the vendor.

  • JBoss Fuse deployed on top of EAP unsupports the Apache Camel CXF and Apache Camel CXFRS components, so web-services, whether RESTful or SOAP-based, can be exposed only by JAX-RS or JAX-WS. Therefore, business logic and error-handling logic alike have to be duplicated across two software stacks. This strange behaviour was a reason for me to initiate my set of demonstration projects on GitHub.

  • Frequently, there is a lack of documentation and examples. No step-by-step guides about the simplest tasks such as how to expose a web-service on the EAP-based version of JBoss Fuse. A developer has to spend a lot of time to found each related iota of information, build a service and then get the 'this component isn't supported on JBoss EAP' message! The lack of documentation is very visible compared to the quality of Apache Camel documentation.

  • The roadmap is overly vague. The release day of the latest available version of the product (6.3.0) is 06.10.2016. There is a 8 months old commit into the master branch of the official repository commented as 'Switch version to 6.x. Fuse 7 will be hosted elsewhere'. But I have no information about where it is exactly.

I think this article highlights enough extent of information for the first look at that Open Source Enterprise Service Bus. If you are a happy user of Red Hat JBoss Fuse, please, share your impression in the comments below. Also, I'll be glad to answer on every you question.

Would you like to give a 'Like'? Please follow me on Twitter!