Chapter 4. Fuse Standalone

4.1. Supported containers

Fuse standalone 7.3 is supported on the following runtime containers:

  • Spring Boot (standalone)
  • Apache Karaf
  • Red Hat JBoss Enterprise Application Platform (JBoss EAP)

4.2. New features in Fuse 7.3

The main new features of Fuse standalone in version 7.3 are:

New Karaf console commands to support Elytron credentials store

The following new console commands have been added to support the Elytron credentials store in Karaf:

  • jasypt:list-algorithms
  • jasypt:digest
  • jasypt:encrypt
  • jasypt:decrypt
  • credential-store:create
  • credential-store:list
  • credential-store:store
  • credential-store:remove
Additional Camel components for Fuse on JBoss EAP

The following additional Camel components are now supported for Fuse on JBoss EAP (Wildfly Camel):

  • camel-cmis
  • camel-fhir
  • camel-ganglia
  • camel-ipfs
  • camel-lra
  • camel-pgevent
  • camel-solr
  • camel-tika
  • camel-wordpress
Support for securing camel-undertow consumer endpoints with Elytron on Fuse on JBoss EAP
In Fuse 7.3, it is now possible to secure Camel Undertow consumer endpoints with Elytron security on Fuse on JBoss EAP.

4.3. Technology Preview features

The following features of Fuse standalone are Technology Preview only and are not supported in Fuse 7.3:

Saga EIP
The Saga Enterprise Integration Pattern (EIP) is a technology preview feature and features only the In-Memory Saga service (which is not suitable for a production environments). The LRA Saga service is not supported. For more details, see section Saga EIP of the "Apache Camel Development Guide".

4.3.1. Fuse Tooling support for Camel LSP

Fuse Tooling provides a cross-platform, cross-IDE approach to Camel application development, with Camel language server protocol (LSP) extensions or plugins for Visual Studio Code, Eclipse IDE, and Eclipse Che.

For Visual Studio Code, you can also add an extension that provides WSDL to Camel Rest DSL support.

Note: These features are already included by default with Fuse Tooling for Red Hat CodeReady Studio.

Visual Studio Code features

The Language Support for Apache Camel extension provides the following features for Camel URIs:

For XML DSL and Java DSL:

  • When you type, the editor provides code completion for Camel components, attributes, and the list of attribute values.
  • When you hover over a Camel component, the editor shows a brief description of the component (from the Apache Camel component reference).
  • As you edit the file, the editor performs an Apache Camel validation check on the Camel code.

For XML DSL only:

  • You can navigate to Camel contexts and routes in the VS Code Outline panel and in the Go > Go to Symbol in File navigation panel.
  • When you type, the editor provides code completion for referenced IDs of direct, direct VM, VM and SEDA components.
  • You can find references for direct and direct VM components in all open Camel files.

The WSDL 2 Camel Rest DSL extension (wsdl2rest implementation) provides WSDL to Camel Rest DSL support. By specifying an existing WSDL file, you can use this extension to generate a Camel Rest DSL + CXF solution for REST-style access. The WSDL file can be located either on your local file system or from an accessible web URL.

To access the Language Support for Camel LSP and WSDL to Camel Rest DSL features, you add one or more extensions.

The Apache Camel Extension Pack installs the following VS Code extensions:

Optionally, you can install the extensions individually.

For more details, see the following readme files:

Eclipse IDE features

The Language Support for Apache Camel Eclipse plug-in provides the following features for Camel URIs:

In the generic Eclipse text editor for both XML DSL and Java DSL:

  • When you type, the editor provides code completion for Camel components, attributes, and the list of attribute values.
  • When you hover over a Camel component, the editor shows a brief description of the component (from the Apache Camel component reference).

When you use the Eclipse XML or Java editor, only the auto-completion feature is provided.

To access the Language Support for Apache Camel features, you install the Eclipse plug-in from the Eclipse Marketplace. For more details, see the readme file for Apache Camel Language Server Protocol for Eclipse IDE.

Eclipse Che features

The Language Support for Apache Camel plugin for Eclipse Che 6 provides features for Camel URIs and XML DSL only.

  • When you type, the editor provides code completion for Camel components, attributes, and the list of attribute values.
  • When you hover over a Camel component, the editor shows a brief description of the component (from the Apache Camel component reference).
  • When you save the file, the editor performs an Apache Camel validation check on the Camel code.

To activate this plugin for Eclipse Che, you need to edit your workspace’s configuration. For details on how to activate it, see the “Use in OpenShift.io” section in this Red Hat Developers blog entry.

4.4. BOM files for Fuse 7.3

To configure your Maven projects to use the supported Fuse 7.3 artifacts, use the BOM versions documented in this section.

4.4.1. Old-style BOM

To upgrade your Fuse standalone applications to use the 7.3 dependencies, edit the Maven pom.xml and change the versions of the BOMs and Maven plugins listed in the following table:

Table 4.1. Maven BOM and plugin versions for 7.3 using the old-style BOM

Container TypeMaven BOM or Plugin Artifact groupId/artifactIdVersion for Fuse 7.3Version for Fuse 7.3.1

Spring Boot

io.fabric8/fabric8-project-bom-camel-spring-boot

3.0.11.fuse-730075-redhat-00001

3.0.11.fuse-731003-redhat-00004

io.fabric8/fabric8-maven-plugin

3.5.33.fuse-730073-redhat-00001

3.5.33.fuse-731003-redhat-00004

org.springframework.boot/spring-boot-maven-plugin

1.5.17.RELEASE

1.5.17.RELEASE

Apache Karaf

org.jboss.fuse/jboss-fuse-parent

7.3.0.fuse-730079-redhat-00001

7.3.1.fuse-731003-redhat-00003

io.fabric8/fabric8-project-bom-fuse-karaf

3.0.11.fuse-730075-redhat-00001

3.0.11.fuse-731003-redhat-00004

org.apache.karaf.tooling/karaf-maven-plugin

4.2.0.fuse-730036-redhat-00001

4.2.0.fuse-731003-redhat-00003

JBoss EAP

org.wildfly.camel/wildfly-camel-bom

5.3.0.fuse-730041-redhat-00001

5.3.0.fuse-731003-redhat-00002

4.4.2. New-style BOM

To upgrade your Fuse standalone applications to use the 7.3 dependencies, edit the Maven pom.xml and change the versions of the BOMs and Maven plugins listed in the following table:

Table 4.2. Maven BOM and plugin versions for 7.3 using the new-style BOM

Container TypeMaven BOM or Plugin Artifact groupId/artifactIdVersion for Fuse 7.3Version for Fuse 7.3.1

Spring Boot

org.jboss.redhat-fuse/fuse-springboot-bom

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

org.jboss.redhat-fuse/fabric8-maven-plugin

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

org.jboss.redhat-fuse/spring-boot-maven-plugin

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

Apache Karaf

org.jboss.redhat-fuse/fuse-karaf-bom

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

org.jboss.redhat-fuse/karaf-maven-plugin

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

JBoss EAP

org.jboss.redhat-fuse/fuse-eap-bom

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

For more details about using the new-style BOM, see Migrate Maven Projects in "Migration Guide".

4.5. Important notes

Important notes for the Fuse 7.3 release of the Fuse standalone distribution:

Fuse on EAP is upgraded to use JBoss EAP 7.2 (from JBoss EAP 7.1)
The Fuse 7.3 release now runs on the JBoss Enterprise Application Platform (EAP) 7.2 container (upgraded from JBoss EAP 7.1 in the previous release of Fuse). For more details, see JBoss EAP 7.2.0 Release Notes.
Upgrade to Servlet API 4.0 (from Java EE 8) and Undertow 2.0 on Apache Karaf

Fuse 7.3 has been upgraded to use Servlet API 4.0 (from Java EE 8) instead of 3.1 (from Java EE 7). Because the Servlet API 4.0 is backward compatible with Servlet API 3.1, and because of certain modifications we have made to the Karaf container, the risk that this upgrade poses to application migration is small. Here are some of the key points to bear in mind when migrating your Karaf-based applications:

  • Undertow 2 server is an implementation of the newer Servlet API 4.0.
  • From a Karaf user’s or administrator’s point of view, there are absolutely no changes to the etc/undertow.xml or etc/org.ops4j.pax.web.cfg configuration files — everything in this configuration remains exactly the same.
  • From a developer’s point of view, Servlet API 4.0 introduces a few minor changes:

    • javax.servlet.http.HttpServletRequest and javax.servlet.http.HttpServletResponse interfaces have a few new methods, but they are marked as default. So if a developer implements these interfaces, there will be no problems. In any case, it is unlikely that you would ever need to implement these interfaces (though they might be implemented by a third-party library).
    • javax.servlet.ServletContext interface has a few new methods, which are not marked as default. In the unlikely event that you have some application code that implements the 3.1 version of this interface and you also invoke one of the new methods in your Fuse application, the java.lang.AbstractMethodError exception would be thrown. All Fuse components (including Camel, CXF, pax-web) have properly implemented the new methods (where required).
  • The biggest potential impact is related to OSGi constraints (Import-Package ↔ Export-Package). In the Fuse distribution of the Karaf container, this problem has been solved by modifying the Karaf container so that applications are wired to use the Servlet API 4.0 JAR, regardless of whether they specify a dependency on the 3.1 version or the 4.0 version. This works, because Servlet API 4.0 is backward compatible and there is no risk with using it instead of 3.1. Read on if you want to know more of the technical details.

    Fuse 7.3 now provides a Servlet API fragment bundle, which is a Fuse specific fragment bundle (mvn:org.jboss.fuse.modules/fuse-servlet-compatibility/7.3.0.fuse-730xxx) that attaches to the mvn:javax.servlet/javax.servlet-api/4.0.1 bundle:

    karaf@root()> la|grep Servlet
    
     42 │ Active   │  30 │ 4.0.0                     │ Java Servlet API, Fragments: 191
    
    191 │ Resolved │  35 │ 7.3.0.fuse-730076         │ Red Hat Fuse :: Modules :: Servlet Compatibility, Hosts: 42

    The role of the Red Hat Fuse :: Modules :: Servlet Compatibility bundle is simply to extend the manifest of the Servlet API 4.0 bundle, so that all other bundles see that the Servlet API is both at version 4.0 and 3.1.