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
andSEDA
components. -
You can find references for
direct
anddirect 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:
- Readme for Apache Camel Extension Pack
- Readme for Apache Camel Language Server Protocol for Visual Studio Code
- Readme for WSDL to Camel Rest DSL
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:
Container Type | Maven BOM or Plugin Artifact groupId/artifactId | Version for Fuse 7.3 | Version for Fuse 7.3.1 |
---|---|---|---|
Spring Boot |
|
|
|
|
|
| |
|
|
| |
Apache Karaf |
|
|
|
|
|
| |
|
|
| |
JBoss EAP |
|
|
|
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:
Container Type | Maven BOM or Plugin Artifact groupId/artifactId | Version for Fuse 7.3 | Version for Fuse 7.3.1 |
---|---|---|---|
Spring Boot |
|
|
|
|
|
| |
|
|
| |
Apache Karaf |
|
|
|
|
|
| |
JBoss EAP |
|
|
|
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
oretc/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
andjavax.servlet.http.HttpServletResponse
interfaces have a few new methods, but they are marked asdefault
. 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 asdefault
. 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, thejava.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 themvn: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.