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.17 to 3.18
camel-core
Camel will now mask all known secret values when logging endpoint URIs to avoid leaking sensitive details such as from stack traces. Previously only a subset of known secret keys was masked.
The type converter from InputStream
to byte[]
will now close the input stream after the conversion.
The TimeUtils.printDuration
method outputs now in a more compact format (especially for long durations). Before 4d12h57m49s
and now 4d12h
. Use precise=true
to include all details.
camel-console
The AbstractDevConsole
has changed the method doCall
into two separate methods doCallText
and doCallJson
to better separate output between text and json based.
camel-cxf
The camel-cxf
JAR has been split up into SOAP vs. REST and Spring and non-Spring JARs.
Users should therefore choose camel-cxf
to migrate among the following JARs:
-
camel-cxf-soap
-
camel-cxf-spring-soap
-
camel-cxf-rest
-
camel-cxf-spring-rest
-
camel-cxf-transport
-
camel-cxf-spring-transport
For example, if you were using CXF for SOAP and with Spring XML, then you would need to migrate from using camel-cxf
to camel-cxf-spring-soap
and camel-cxf-spring-transport
.
When using Spring Boot, then you need to migrate from camel-cxf-starter
to use SOAP or REST:
-
camel-cxf-soap-starter
-
camel-cxf-rest-starter
The camel-cxf
XML XSD schemas have also changed namespaces:
Old Namespace | New Namespace |
---|---|
The namespace for Apache Camel Karaf (camel-cxf-blueprint ) has not changed. This module has not been split-up and comes with both SOAP and REST combined as before. |
And the camel-cxf
SOAP component is moved to a new jaxws
sub-package, i.e. org.apache.camel.component.cxf
is now org.apache.camel.component.cxf.jaws
.
This means, for example, the CxfComponent
class is now located in org.apache.camel.component.cxf.jaxws
.
Some classes in the following packages were refactored, and the package was updated. If you were using one of those packages and, after the migration, a ClassNotFoundException
is thrown, an update should be considered
Old Package | New Package |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
camel-endpointdsl
The options for lazyStartProducer
and bridgeErrorHandler
has moved into the advanced group.
camel-google-calendar
The keyResource
option has been changed to serviceAccountKey
to match to Google semantic. Then, if you use the keyResource
to Google Calendar component, you should update it to serviceAccountKey
.
camel-google-drive
The keyResource
option has been changed to serviceAccountKey
to match to Google semantic. Then, if you use the keyResource
to Google Drive component, you should update it to serviceAccountKey
.
camel-jsonpath
There is a new option unpackArray
in Camel 3.18.3 that unpacks a single-element Json array, matched by a Jsonpath, into an object. This option is disabled by default (this behaviour was enabled by default in previous Camel versions). There is a new expression jsonpathUnpack(String text, Class<?> resultType)
that makes use of this new option.