Apache Camel 3.x Upgrade Guide
This document is for helping you upgrade your Apache Camel application from Camel 3.x to 3.y. For example if you are upgrading Camel 3.0 to 3.2, then you should follow the guides from both 3.0 to 3.1 and 3.1 to 3.2.
Upgrading Camel 3.14 to 3.15
| Java 8 is no longer supported. Camel 3.15 onwards requires Java 11 or 17. |
Core Dependency changes
As part of CAMEL-17429 and CAMEL-17435, the following dependencies are no longer included by default on all the Camel modules:
-
com.sun.xml.messaging.saaj:saaj-impl
-
jakarta.xml.bind:jakarta.xml.bind-api
-
javax.annotation:javax.annotation-api
-
javax.xml.soap:javax.xml.soap-api
-
javax.xml.ws:jaxws-api
-
org.apache.geronimo.specs:geronimo-jta_1.1_spec
-
org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec
-
org.glassfish.jaxb:jaxb-runtime
These dependencies were included on the specific modules and components that required them on a per-case basis.
Applications with dependency on any of those, but using them transitively, should be modified to include them.
camel-core
Removed the deprecated Classic value from startupSummaryLevel enums.
The deprecated propertyName on removeProperty EIP has been removed, use name instead.
Data Formats
The data formats naming has been made consistent to use Camel Case:
| Old Name | New Name |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Spring Boot auto-configuration names has also been renamed (uses dash case as this is Spring Boot naming style):
| Old Name | New Name |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Message History
The message history output has changed to include source column, which refers to the Java class/XML file from the DSL the message was at the given time. (line precise error reporting).
This default formatting are (Source, ID, Processor, Elapsed):
MESSAGE_HISTORY_HEADER = "%-40s %-30s %-50s %-12s";
MESSAGE_HISTORY_OUTPUT = "%-40.40s %-30.30s %-50.50s %12.12s";
If you are using custom sizes then you need to adjust accordingly.
camel-endpointdsl
The Endpoint DSL is now more type-safe, where previously an option would be declared as Object type,
is now declared using its actual type, such as javax.sql.DataSource.
Option that are enums is now using the real enum FQN class name, instead of a duplicate enum
class that was embedded inside the Endpoint DSL. For example when using aws2sq the
namingStrategy enum is changed from org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory
to org.apache.camel.component.aws2.s3.stream.AWSS3NamingStrategyEnum class name.
camel-management
The route controller MBeans are moved from routecontrollers to the existing services
node in the JMX MBean tree.
Removed deprecated operations on CamelContextMBean and CamelRouteMBean.
camel-util
Deleted the replaceAll method of org.apache.camel.util.StringHelper. Please use the replace method of java.lang.String instead, as it is much faster from Java 11 onward.
camel-yaml-dsl
Removed steps from route because steps should only be configured on from making
the DSL consistent and similar to Java DSL.
Before it was possible to do:
- route:
id: demo-route
from:
uri: "timer:info"
steps:
- log: "message"
This should correctly be done with steps as child of from:
- route:
id: demo-route
from:
uri: "timer:info"
steps:
- log: "message"
The tod EIP name has been removed, the correct names to use is toD.
camel-jbang
The JBang app that was previously named CamelJBang is now named camel. It is still possible to use the older name by installing it using CamelJBang@apache/camel but this approach is deprecated and should not be used in the future.
camel-cdi
The legacy XML in camel-cdi with <camelContext> is deprecated, instead the XML DSL route loader should be used.
JTA support is moved out of camel-cdi to its own camel-cdi-jta module.
The org.apache.camel.cdi.Main class has moved from camel-cdi to camel-cdi-main JAR.
camel-kafka
The following classes were moved from org.apache.camel.component.kafka to org.apache.camel.component.kafka.consumer:
-
DefaultKafkaManualAsyncCommit -
DefaultKafkaManualAsyncCommitFactory -
DefaultKafkaManualSyncCommit -
DefaultKafkaManualSyncCommitFactory -
KafkaAsyncManualCommit -
KafkaManualCommit -
KafkaManualCommitFactory
The signature for KafkaManualCommitFactory and its classes has been adjusted to abstract some runtime parameters. The old signature is still available but will be removed in 3.16.0.
camel-karaf
The camel-endpointdsl and camel-componentdsl is no longer supported on Apache Karaf.
The camel-osg-activator, camel-google-calendar, camel-google-drive, camel-google-mail, camel-google-sheets, and camel-jooq has been removed.
camel-netty / camel-netty-http
The netty producer has migrated from commons-poll v1 to v2.
The option producerPoolMaxActive is renamed to producerPoolMaxTotal.
camel-quartz
Removed the option startDelaySeconds as this does not work correctly and causes problems if in use.
camel-openapi-java
The contextPath specified in the REST configuration is no longer added to the paths of the operations in the generated openapi specification.
camel-google-drive
The camel-google-drive component has upgraded to the latest version of google-api-services-drive. This means that support for access to the Google Drive Realtime APIs
via URIs like google-drive:drive-realtime has been removed. Google deprecated and retired the realtime APIs some time ago.