Camel 2.4.0 release

New and Noteworthy

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

New Enterprise Integration Patterns

New Components

New DSL

New Annotations

New Data Formats

New Languages

New Examples

New Tutorials

API breaking

The ToAsync has been removed and replaced with a better asynchronous routing engine.

Routing Slip now requires using Expression to specify the routing slip header, the XML DSL of Routing Slip is broken.

    <route>
       <from uri="direct:a"/>
       <!--NOTE from Camel 2.4.0, you need to specify the expression element inside of the routingSlip element -->
       <routingSlip ignoreInvalidEndpoints="true">
           <header>myHeader</header>
       </routingSlip>
    </route>

The retryUntil method on onException have been renamed to retryWhile to better match what it does. It keeps retrying while the predicate returns true.

org.apache.camel.spi.Policy now has an additional method beforeWrap which means you need to implement this method in your implementations. Just add a empty method to adapt.

The class org.apache.camel.management.event.ExchangeFailureEvent has been renamed to org.apache.camel.management.event.ExchangeFailedEvent.

Known Issues

The Tracer may not output all details for some situations such as when using onCompletion or intercept etc.

Not all Examples have ANT build.xml files to run the example using ANT.

The read timeout in Netty is causing it to spawn threads and you end up with out of memory error. You have to disable using timeout by setting the timeout=0 in the endpoint configuration. This issue has been fixed in the next release.

The LoggingErrorHandler does not work when also using onException. It may go into an endless loop. So refrain from using logging error handler.

The JMX statistics for type=processors is being counted double. The stats on the type=routes is correct though.

The Jetty component sends back HTTP headers with lower-case keys.

HawtDB does not work in OSGi

HawtDB has a bug in version 1.4 or older which prevents the filestore to free unused space. Version 1.5 fixes this.

There is a concurrency issue when using predicates using binary operators such as isEqualTo. See CAMEL-3188.

The FTP consumer may stop continue polling. You can start the consumer from eg. a management console and it will start again.

Important changes to consider when upgrading

Camel now uses Spring 3.0.3 as the default Spring version. Spring 2.5 is still supported.
Spring 2.0.x support is now @deprecated and will in future releases not be supported.

Mind that Spring 3.0 has changed how it performs dependency injection. In fact it may even perform this differently than what Spring 2.5 would do. For example the order and which beans is dependency injected on startup could potential affect your existing Camel applications when upgrading. It appears as Spring 3.0 has gotten worse in this area and you may have to specify depends-on attributes on your spring bean to help Spring.

IntrospectionSupport has been improved to be consistent for getProperty and getProperties. Also getProperties now find all relevant properties. This will often only be relevant for Camel end users who build their own components any may use IntrospectionSupport.

The ProducerTemplate have been tighten up a bit. All send/request -body methods will now throw a CamelExecutionException with the cause wrapped. This ensures its consistent.

The ftps is now using secure data channel also when transferring files. There has been added some options which you can use to control the behavior and turn it off if you want the old behavior (only secure login).

The FTP starting directory can now be set using absolute paths as well. In the endpoint uri just define two leading / to indicate absolute, eg "ftp:admin:secret@someserver//absolutepath/foo/bar".

The default port from ftps has been changed from 2222 to 21.

The FTP is now using a default of 10 sec connect timeout (ALL), and 30 sec data timeout (FTP/FTPS only).

The RouteBuilder now have simple and xpath expression builder methods out of the box, which means you don't have to use static imports to use those two Languages. The compiler may complain if you have a static import, which you simply fix by removing the static import.

Getting the Distributions

Binary Distributions

Description

Download Link

PGP Signature file of download

Windows Distribution

apache-camel-2.4.0.zip

apache-camel-2.4.0.zip.asc

Unix/Linux/Cygwin Distribution

apache-camel-2.4.0.tar.gz

apache-camel-2.4.0.tar.gz.asc

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

Description

Download Link

PGP Signature file of download

Source for Windows

apache-camel-2.4.0-src.zip

apache-camel-2.4.0-src.zip.asc

Source for Unix/Linux/Cygwin

apache-camel-2.4.0-src.tar.gz

apache-camel-2.4.0-src.tar.gz.asc

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:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-core</artifactId>
  <version>2.4.0</version>
</dependency>

SVN Tag Checkout

svn co http://svn.apache.org/repos/asf/camel/tags/camel-2.4.0

Changelog

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