Camel 2.5.0 release

New and Noteworthy

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

  • Added suspend/resume operations to CamelContext for warm restarts, or as the preferred way to temporary stop a running Camel application, and then later resume it. Those operations is also available in JMX.
  • Improved management of routes in JMX. You can now suspend/resume routes which support suspension. There is a new removeRoute to remove a route from JMX. Routes with autoStartup=false is now also listed in JMX, to allow you to start the routes manually.
  • The Asynchronous Routing Engine allows to be forced into synchronous mode for certain components, by specifying synchronous=true in the endpoint uri.
  • FTP now supports MSV file systems. The ftp consumer will now traverse the directory structure using a cd <dir>, list files in cur dir pattern, as opposed to a list files <dir> style.
  • FTP improved support for consuming using absolute paths.
  • Fixed issue with using multiple HTTP endpoints with the only difference being httpClient parameters.
  • Fixed issue with Stream caching and deleting temporary files on Windows.
  • Server thread pool settings can be configured on Jetty component.
  • Easier to configure general HTTP/SSL socket connector properties on Jetty component.
  • Fixed issue with sending an InOut message to Dead Letter Channel would cause Camel to expect a reply. Now the message will always be send to the DLQ as InOnly.
  • Fixed issue when sending to a JMS destination, the option disableReplyTo was not used.
  • Added two new functions to XPath to leverage Properties component and Simple language.
  • Fixed issue when running Jetty server under heavy load throwing IllegalStateException
  • JMS uses Asynchronous Routing Engine for Request Reply messaging over JMS.
  • Fixed issue with a route could mistakenly pick up a route scoped OnException from another route.
  • Fixed an issue with starting CamelContext after it had been shutdown, leading to routes not properly being re-initialized and started.
  • The File and FTP consumers now support using preMove together with either noop or delete options.
  • Added support for timeout in Recipient List, Splitter and Multicast EIPs when running in parallel mode.
  • Added support for 3rd part UuidGenerator.
  • Reverted back to use ActiveMQ UuidGenerator as default generator. Its faster than the previous JavaUuidGenerator, especially in high concurrent systems.
  • Velocity can now find template files from filesystem/classpath when referring to them from other templates.
  • Fixed issue with multiple CamelContext using same id being mixed as single CamelContext in JMX. Camel now fails to start if existing CamelContext already have been registered in the MBeanServer.
  • The Message Filter EIP now stores a property on the Exchange to indicate if it was filtered or not.
  • FTP supports sending site commands after successful login.
  • Simple language can now compare numeric values which was entered as String types.
  • Fixed limitation where PollEnrich could not poll from a file endpoint if the route started from a file endpoint as well.
  • Fixed limitation with Simple language, before you could only use one and or or operator. Now you can use multiple operators in the same expression.
  • Restlet component now supports using { } placeholders in uri, which gets replaced with headers from Exchange.
  • Added dynamicRouter to the DSL to make it easier to do dynamic routing using a Bean to evaluate on-the-fly the next destination(s).
  • When sending a JMS message using InOnly but having a JMSReplyTo header configured, then the JmsProducer will lookup/create the JMS Destination to ensure its a valid JMSReplyTo from the header.
  • Endpoint uris containing password is not logged in plaintext, but is now masked.
  • Properties can now leverage Jasypt allowing you to use encrypted values in your properties files.
  • Trimmed down the size of the Web Console reducing the number of jars and removing the groovy experimental editor. It now requires JDK 1.6 to run as well. We will in the future improve the Web Console to contain more features and information.
  • Added new Language component to execute Languages scripts when sending a message to a language endpoint. This makes it easier to support Dynamic Router where small pieces of logic must be executed as well.
  • Added charset option on the File, FTP endpoint which dictates the encoding to use.
  • CXF consumer and CXFRS consumer will try to leverage CXF continuation API to call the camel process asynchronous API if it is possible, and you can turn it off by setting the synchronous option to true.
  • CXF Bean Component now supports using customer providers configured by the providers option on the CXFRS endpoint.
  • Fixed ConsumerTemplate using receiveBody methods to complete OnCompletion beforehand. For example when using a File endpoint and having set delete=true, which now causes the file to be deleted.
  • Fixed HawtDB not working in OSGi
  • Fixed dependency injection between <bean> and <camelContext>, making it work as it did with Spring 2.5 when using Spring 3.0 instead. The <bean> will be dependency injected before the <camelContext>.
  • Optimized Type Converter when using Jetty routing and/or conversions to String types which will fallback and lookup PropertyEditor editors.
  • Added LimitedPollingConsumerPollStrategy for Polling Consumers as a limited strategy which suspends consumers which causes consecutive failures. For example to avoid a faulty consumer to spam logs etc. Uses a limit of 3.
  • Fixed Jetty sending back HTTP headers using keys is lower-case. Not it preserves the case of the keys, so it can be mixed case.
  • Added $simple{ } as alternative syntax for tokens in the Simple language to avoid clashing when using Springs PropertyPlaceholderConfigurer. See example at the File language page.
  • Added discardOnCompletionTimeout option to Aggregator
  • Fixed concurrency issue when using predicates using binary operators such as isEqualTo.
  • Total overhaul of the Quickfix component. Thanks to the QuickFIX/J community for help.
  • CXFRS producer now leverages fallback type converter which means its much easier for end users to grab the response body in a type they want.
  • Mail component now supports specifying emails using "Ibsen, Claus" <davsclaus@apache.org> style.
  • Fixed issue with FTP which could cause the polling to stop without any hint in the logs why.
  • Added publishedEndpointUrl option into the CXF component.
  • DefaultPackageScanClassResolver supports to configure the url schemes by using Spring configuration. To cater for Server's using custom classloader schemes in URLs.
  • Added option lazyLoadTypeConverters to CamelContext to configure if type converters should be loaded lazy or on startup (default).

New Enterprise Integration Patterns

New Components

New DSL

New Annotations

  • @DynamicRouter

New Data Formats

New Languages

New Examples

New Tutorials

API breaking

  • Some methods on the File and FTP endpoint/producer has been promoted from protected to public to make it easy from Java code to re-use the functionally of those methods, without using it as a Camel component. Such as when you want to communicate with a FTP server using the API from the RemoteFileOperations.
  • Added changeToParentDirectory method to GenericFileOperations.

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.
  • Project cannot be fully build using Maven 3.0
  • One may encounter build errors in camel-ftp with java versions older than "1.5.0_24"
  • Dozer does not work in OSGi
  • camel-blueprint is not fully feature complete (such as @Producer, @Consume is not supported)
  • camel-blueprint using <package> scan does not work
  • Setting a custom TaskExecutor on JMS component using Spring 2.5 does not work as camel-jms is compiled against Spring 3.0. See more at CAMEL-3286
  • markRollbackOnlyLast doesn't remove caused exception, which may affect outer transaction to rollback as well. Likewise the logging of TransactionErrorHandler may log the inner transaction as being committed, when it was in fact rolled back.
  • Splitter using parallelProcessing may use a lot of memory during processing, see CAMEL-3497

Important changes to consider when upgrading

  • Support for JMS API 1.0.2 has been removed.
  • The stopRoute method on CamelContext now leverages Graceful Shutdown when stopping. This is more intuitive to stop routes in a graceful and safe manner. You can the stop method with a timeout if you want to force stopping, which was the old behavior.
  • The Web Console now requires JDK 1.6 as minimum to run.
  • The artifacts camel-core-tests.jar and camel-spring-tests.jar has been deprecated and will be removed in a future release. You should always only use the camel-test.jar if you want to use the Camel Test Kit.
  • Camel will now fail to startup if an existing CamelContext has been registered in JMX with the same id.
  • If you did not set a id on <camelContext> it would have defaulted to camelContext. This has been changed to be the auto assigned name it's given by Camel, such as camel-1, camel-2 etc.
  • Maven version 2.2.1 or better is now required to build Camel from source.
  • If using Quartz with jobs persisted in a database, then mind that Camel now resolves job names based on endpoint uri, without parameters. This allows you to change cron parameters on the same job (reschedule jobs).
  • The timeout option on Netty has been removed as it was flawed.
  • Durable topic subscribers with JMS must now provide clientId, otherwise Camel will fail fast on startup.
  • The default UuidGenerator has been changed back to be ActiveMQ based. If you run in the cloud you may have to configure to use the old default JavaUuidGenerator as the ActiveMQ may use JDK API which is not accessible in the cloud.
  • If you use the FTP component (consumers) make sure to test it throughly as it has changed how it traverse the file structure.
  • Upgraded to Spring 3.0.4
  • Upgraded to CXF 2.2.11

Getting the Distributions

Binary Distributions

Description

Download Link

PGP Signature file of download

Windows Distribution

apache-camel-2.5.0.zip

apache-camel-2.5.0.zip.asc

Unix/Linux/Cygwin Distribution

apache-camel-2.5.0.tar.gz

apache-camel-2.5.0.tar.gz.asc

The above URLs use redirection

Icon

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.5.0-src.zip

apache-camel-2.5.0-src.zip.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:

SVN Tag Checkout

Changelog

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

© 2004-2014 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram