Camel 2.2.0 release

New and Noteworthy

Welcome to the 2.2.0 release which approx 180 issues resolved (new features, improvements and bug fixes such as...)

New Enterprise Integration Patterns

New Components


New Annotations

New Data Formats

New Languages

New Examples

API breaking


The methods DefaultComponent.resolveAndRemoveReferenceParameter and DefaultComponent.resolveAndRemoveReferenceParameterList have been changed to make the leading # sign for bean references optional and to throw an IllegalArgumentException if a referenced bean is not in the registry. For details see CAMEL-2248.


The property Exchange.FILTETED have been removed as part of CAMEL-2288.

Added two new methods for getProperty to accept a defaultValue as parameter to be used when the property does not exists.


Added two new methods for getHeader to accept a defaultValue as parameter to be used when the header does not exists.


The class org.apache.camel.spi.ExceptionHandler now have two additional methods which accepts more details when an Exception occurred such as a message and the current Exchange.


The name attribute in @EndpointInject has been renamed to ref to be consistent with the other annotations. Its a reference for an Endpoint to be looked up in the Registry.


The BatchConsumer have a new method isBatchAllowed which should be used during processing the batch, to break out the batch loop in case its not allowed anymore. Also BatchConsumer should consider implement ShutdownAware to support fine grained control during shutdown. See for example the GenericFileConsumer for details.


The GenericFileProcessStrategy has a new method prepareOnStartup which is used to prepare the File component on startup, such as deleting orphaned lock files. The same applies for the GenericFileExclusiveReadLockStrategy interface in case you have developed a custom lock strategy.


The ManagementStrategy now supports multiple EventNotifier and thus have its setter/getter methods adjusted to a List<EventNotifier> and there is a addEventNotifier method as well to add a single EventNotifier.


The EventNotifier has new methods for filtering events based on categories. The DefaultEventNotifier class has been renamed to LoggingEventNotifier and a new EventNotifierSupport class is added which is meant for custom implementations to extend.


The UnitOfWork have adjusted its methods for setting RouteContext from a setter to a push and pop style.

Known Issues

See known issues from previous releases.

Using RecipientList and Mina

When using the Recipient List together with MINA endpoints Camel will over time hold on to memory which could lead to OutOfMemoryErrors. See more at: CAMEL-2484

Important changes to consider when upgrading

Features file moved

For Camel 2.2.0, the newly named features.xml file can be found in
You can use it in Karaf by doing a features:addUrl mvn:org.apache.camel.karaf/apache-camel/2.2.0/xml/features

Please don't install camel-osgi and camel-spring-osgi bundle in OSGi environment at the same time

We have an issue that installing camel-osgi and camel-spring in different order will cause the "" namespace can't be handled rightly in OSGi environment. From Camel 2.2.0 we merged the camel-osgi and camel-spring bundles together, it's camel-spring-osgi.
In this way camel-osgi and camel-spring-osgi both have the BundleActivator which helps camel-core to load the component in OSGi container. If you install these two bundle at the same time will cause some conflict on the component finding.
You just need to install camel-core, camel-spring-osgi bundle to let the basic camel application work.

Spring jar dependencies have been cut down in camel-core.

The pom.xml file for camel-core have cut down number of spring jar dependencies to allow Camel to easily run without any Spring .jars at all. However this affects you if you use maven and use camel-core without camel-spring or spring at all. If you want to use JMX with Camel then you need to add the following 4 spring jars required: spring-core.jar, spring-beans.jar, spring-context.jar, spring-aop.jar. With maven you only need to depend on spring-context and spring-aop as they will bring in the other two jars.

See also Camel JAR Dependencies and Camel JMX.

Using filter in Splitter

The filter no long influence the split and its AggregationStrategy as it was just too confusing why it did that. See CAMEL-2288 for details.

camel-http and proxy

The HTTP component used to read Proxy settings directly from system properties. You should instead configure proxy wide information as properties to the CamelContext instead. See HTTP for details.


How correlationId is determined has been changed slightly. Now JMS will always use messageId if configured to do so using useMessageIDAsCorrelationID==true. Otherwise JMSCorrelationID is used but if that has not been set then Camel will fallback to use messageId instead. See the method determineCorrelationId in the class org.apache.camel.component.jms.EndpointMessageListener for actual implementation. This change will most likely not affect most users.

Getting the Distributions

Binary Distributions


Download Link

PGP Signature file of download

Windows Distribution

Unix/Linux/Cygwin Distribution



The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using FireFox

Source Distributions


Download Link

PGP Signature file of download

Source for Windows

Source for Unix/Linux/Cygwin



Getting the Binaries using Maven 2

To use this release in your maven project, the proper dependency configuration that you should use in your Maven POM is:


SVN Tag Checkout

svn co


For a more detailed view of new features and bug fixes, see the: