Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h1. Camel 2.8.0 release (currently in progress)

{div:style=padding-right:20px;float:left;margin-left:-20px;}
!http://camel.apache.org/download.data/camel-box-v1.0-150x200.png!
{div}
{div:style=min-height:200px}
{div}

h2. New and Noteworthy

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

* Fixed the OGNL support of [Simple] language to support dots in key for map access.
* You can now specify [type parameters|Bean Binding] in [Bean] to exact select method to be used when having overloaded methods (overloaded methods have same name, but vary in parameter types).
* The [SFTP|FTP] component now allows you to customize keep alive settings.
* Fixed issue if explict setting {{JmsMessage}} body to {{null}} would cause Camel to re-initialize the body from the underlying {{javax.jms.Message}} on access again.
* [Mock] endpoints is now lenient, which means its easier to replace components with [Mock] for testing purposes. Using uri parameters which the [Mock] endpoint wont no longer complain about being unknown parameters.
* Camel places a breadcrumb header in the Camel [Message] which allow us to keep track of messages across transports such as [JMS], [HTTP] and many others. See more details at [MDC logging].
* Improved [XPath] to allow GC to kick-in a bit earlier to free memory as Camel will clear references to used [Exchange]s used during [XPath] evaluations.
* Fixed an issue using [FTP] endpoints with the [interceptSendToEndpoint|Intercept]
* [Camel Proxy|Using CamelProxy] supports asynchronous invocations using {{Future}} handles.
* The [endpoint cache|How do I configure the maximum endpoint cache size for CamelContext] can be configured on [CamelContext].
* [Cometd] supports custom security policy and extensions as [documented here|http://cometd.org/documentation/howtos/authentication]
* Caches such as {{ProducerCache}} and {{EndpointRegistry}} can now be purged from [JMX|Camel JMX].
* Added stats for number of redeliveries and handled failures to JMX.
* Added support for [JBoss 6|camel-jboss].
* [JMS] consumer uses {{CACHE_AUTO}} for default cache level. This ensure that it will automatic detect if its transacted and use {{CACHE_NONE}} which must be used for transacted. And {{CACHE_CONSUMER}} for non transacted.
* Improved [Splitter] in parallel mode to be more responsive when aggregating on-the-fly under high load, and reducing number of threads in-use.
* Added {{onPrepare}} to [Multicast], [Splitter], [Recipient List], and [Wire Tap] to execute custom logic when preparing messages. For example you can use that to deep clone message bodies, or enrich messages before they are processed.
* Added {{CamelSqlQuery}} header to [SQL Component] to specify (per exchange) SQL query. 
* {{[camel-cache|Cache]}} now works in OSGi.
* Fixed an issue with [HawtDB] file store growing to large.
* Added {{repeatCount}} option to [Timer] so you can limit the number of times it fires.
* Consuming from [JMS] will now uses default exchange ids, instead of overring and uses ids based on {{JMSMessageID}}. This makes exchange ids consistent with all components in Camel.
* The {{camel-script}} component now works in OSGi and being able to discover and use {{ScriptEngineFactory}} from bundles.
* [Restlet] producer now supports the [Asynchronous Routing Engine]
* [Throttler] now uses an [Expression] for the maximum messages per period, which means it can be adjusted dynamic at runtime.
* [Cache] now supports replicating cache across nodes using listeners.
* [Cache] headers are now prefixed with 'CamelCache' and use mixed case, also they are removed from the exchange after a cache operation is performed
* Fixed issue with [XMPP] being redeployed (hot-deploy) in Apache ServiceMix may fail.
* [CXF] uses case-insensitive keys for CXF protocol headers, which Apache CXF itself also uses.
* Fixed issue with stopping context scoped [Error Handler] if a route was stopped, for example using [JMX|Camel JMX].
* Updated documentation of each [EIP] to include a table with the options they support.
* Improved the [AWS-SQS], [AWS-SNS] and [AWS-S3] components to be able to configure the region with which the Amazon client wants to work with.
* The {{testConnectionOnStartup}} option on [JMS] now also checks JMS producers as well.
* Upgraded [CometD] from 1.0.1 to 2.1.0
* [Message Filter] EIP now fail on startup if it was mis-configured in XML DSL
* Fixed issue with [Content Based Router] in [Scala DSL] not evaluating as [Predicate]s.
* Improved the [JDBC] component to not leave the database in an inconsistent state if one of multiple updates fails.
* Fixed issue with [JMS] consumer may report a class cast exception at WARN level during processing a message.
* Removed not needed type conversion attempts by {{camel-jaxb}}, when routing messages to [Bean]s, for JAXB annotated payloads
* Optimized routing with [Bean] slightly
* Fixed an issue when restarting routes with scheduled polling consumers having {{consumer.xxx}} properties configured. The {{consumer.xxx}} properties would be lost on restart.
* Added fallback to [File|File2] component, to do a copy/delete if a native file rename fails. This may happen if you rename files between different file systems such as linux -> shared windows directory.
* Minor improvements to [Scala DSL]
* [Aggregator|Aggregator2] EIP will now by default uses eager completion check when grouped exchange has been enabled.
* Internal Camel caches now uses a [SoftReference|http://download.oracle.com/javase/6/docs/api/java/lang/ref/SoftReference.html] which allows the JVM to be able to garbage collection from the cache in case its running out of memory. This should help Camel end users when running in low memory systems.
* Added 2 new [Camel Maven Archetypes] for OSGi using spring-dm or blueprint
* The [Log] component will now by default *not* show stream message bodies. Use the new {{showStreams}} option to enable that explicit.
* Improved startup time of Camel by hard loading type converters from {{camel-core}} JAR
* Made unit testing the Camel [Source] go faster
* The Camel [test kit|Testing] will now by default lazy load type converters which makes unit testing faster for most tests.
* Added new features to [AdviceWith] to support {{weaveByType}}, selectors, and a shorthand to easily add nodes to start/end of routes.
* [Camel Test] support setting up [CamelContext] once per test class, instead of every test method. This can speedup testing when having multiple test methods in the same unit test class.
* Fixed an issue with [FTP|FTP2] producer not trying to re-connect if pre write check fails. By re-connecting the producer can recover and process the message without failing.
* [Camel JMX] can now show the routes as XML on the CamelContext/Route mbeans. Likewise route(s) can be updated/added from XML as well.
* [Camel JMX] added operations to {{ManagedCamelContext}} to send messages which has headers as well.
* [Camel JMX] added operations to {{BrowsableEndpoint}} mbeans to show message in generic XML format.
* The JDBC and JPA based idempotent repositories now contains a createdAt property/column.
* Improved the [AWS-SQS] component to change all queue attributes (VisibilityTimeout, MaximumMessageSize, MessageRetentionPeriod and Policy) at a later time if needed.
* Aligned the authentication and proxy parameter names so [HTTP4] uses same names as [HTTP] component.
* Removed some very seldom used expression builders in Java DSL that caused a minor problem with being able to render the routes as XML. By removing those we ensure the routes creating using Java DSL can accurately render itself as XML DSL routes.
* Added [Hazelcast|Hazelcast Component] as supported store for the [Idempotent Consumer] EIP
* [Tracer] uses same logic as [Log] component for extracting message body. By default they will not log/trace message bodies from stream/files. But instead indicate its a stream/file message body. You can control this behavior by setting a property on the [CamelContext].
* Added monitor type consumer to [CAMEL:JMX] consumer. This new style of consumer automatically creates and deploys a monitor bean (counter, gauge, or string) to monitor the specified attribute of an existing bean. This is useful for cases where a route wants to monitor a bean without relying on an pre-existing deployment and configuration of a monitor.
* Added [Ref Language] to make it easy to refer and use custom [Expression] in XML DSLs.
* You can provide additional arguments to [Scripting Languages] as a header on the Camel Message.
* Added support for setting custom properties in the endpoint uri for [CXF] by using {{properties.}} as prefix, eg {{properties.mtom-enabled=true}} to enable MTOM. This is usable if you configure and use [CXF] from Java DSL. The XML DSL has a specialized CXF schema to configure this using XML tags.
* Added option {{disableTimeToLive}} on [JMS] to force disabling time to live value. Added more details in [JMS] documentation about the need for synchronizing clocks for [JMS] systems when doing request/reply, and why the option {{disableTimeToLive}} may come handy.
* [Spring-WS|Spring Web Services] producer now propagates headers correctly.
* Components loading resources such as [Velocity], [XSLT], [XQuery], [Freemarker] etc. now leverages Camels [Pluggable Class Resolvers] which ensures they now work in [OSGi Blueprint|Using OSGi blueprint with Camel]. 
* {{DefaultPackageScanClassResolver}} uses a JAR cache to speedup scanning JARs. This ensures Camel bootup faster, in case it re-scan JARs from the cache.
* Exposed Restlet API in [Restlet] to allow end users to be in full control. For example using the {{org.restlet.Response}} instance to populate the response from a [Restlet] route.
* Splited camel transport for cxf out of camel-cxf module. If you want to use camel transport for cxf or the cxfbean component, you need to add the dependency of camel-cxf-transport.
* [Aggregate|Aggregator2] EIP will restore timeout values from existing exchanges from aggregation repository upon start. This ensures that restarting Camel, will allow the aggregator trigger timeouts for those existing exchanges.
* [Bean] component: [Parameter Binding Annotations] are now also inherited from superclasses and interfaces.

h3. New [Enterprise Integration Patterns]

h3. New [Components]

* [AWS-SNS]
* [AWS-S3]
* [HDFS]
* [TestNG|Camel Test]

h3. DSL Changes

* [Wire Tap] has now fluent builders in Java DSL to make it easier to configure.
* [Wire Tap] can now set headers directly in the DSL when using the send new message mode.
* Added {{skipDuplicate}} option to [Idempotent Consumer] EIP to allow end users to handle duplicate messages more easily in Camel routes.
* [Throttler] now uses an [Expression] to set the maximum requests per period, allow that to be dynamic evaluated at runtime. This means you need to migrate if you use XML DSL.
* Added {{copy}} option to [Loop] EIP so you can run in copy mode, which mean each iteration is reset and use a copy of the same input exchange.

h3. New Annotations

h3. New [Data Formats|Data Format]

h3. New [Languages]
* [Ref Language]

h3. New [Examples]
* [CXF Example OSGi]

h3. New [Tutorials]

h2. API breaking

* Added {{purge}} method to {{ServicePool}}
* If you use [Wire Tap] from within a [Content Based Router] in Java DSL, then you need to use {{end()}} to indicate the end of the [Wire Tap]. See this [test|https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRWithWireTapTest.java]
* {{WireTapDefinition}} no longer extends from {{SendDefinition}}
* Removed {{maximumRequestsPerPeriod}} attribute on [<throttle>|Throttler] in XML DSL. You should use an [Expression] instead, such as {{<constant>10</constant>}}
* [Cache] headers are now prefixed with 'CamelCache' (see CacheConstants) and are removed from the exchange after the cache operation is performed
* [Scala DSL] uses 'Camel case names' for its DSL to be consistent and aligned with the Java DSL
* The {{sendBody}} and {{requestBody}} methods on {{ManagedCamelContext}} have changed signature to use a {{java.lang.Object}} type in the 2nd parameter. Instead we have introduced {{sendStringBody}} and {{requestStringBody}} that has a {{java.lang.String}} type in the 2nd parameter. For example you can use those from JConsole.
* The JDBC and JPA based idempotent repositories now contains a createdAt property/column.
* The authentication and proxy parameter names have been renamed in the [HTTP4] component. See the [HTTP4] page for details.
* Removed seldom used methods on EIPs that uses an {{ExpressionClause}} to build up an expression. There are other existing methods that accept an {{Expression}} as parameter to be used instead:
** {{completionPredicate()}} on {{AggregationDefinition}}
** {{onWhen()}} on {{CatchDefinition}}
** {{expression()}} on {{IdempotentConsumerDefinition}}
** {{onWhen()}} on {{OnCompletionDefinition}}
** {{onWhen()}} on {{OnExceptionDefinition}}
** {{idempotentConsumer()}} on {{ProcessorDefinition}}
** {{expression()}} on {{SplitDefinition}}
** {{onWhen()}} on {{TryDefinition}}
** {{expression()}} on {{WhenDefinition}}
* Removed the deprecated {{handled}} methods on [Error Handler]
* {{GZIPHelper}} moved from [HTTP]/[HTTP4]/[GHTTP] components to {{camel-core}}

h2. 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 project cannot fully build the site using Maven (eg running {{"mvn site"}}. There is no plan to make this work as the project do not use the maven site.
* The {{camel-spring-ws}} feature does not work in Apache ServiceMix or Apache Karaf.

h2. Important changes to consider when upgrading

* Upgraded to slf4j 1.6.1
* Upgraded to Apache CXF 2.4.0 (CXF 2.3.x or older is no longer supported)
* The {{testConnectionOnStartup}} option on [JMS] now also checks JMS producers as well.
* Fixed {{InterceptStrategy}} to pass in actual {{OutputDefinition}}. For example in a route with a [Splitter], it would now pass in the children of the splitter, in the {{wrapProcessorInInterceptors}} method.
* The [Log] component will now by default *not* show stream message bodies. Use the new {{showStreams}} option to enable that explicit. Likewise the [Log] component will *not* automatic convert the payload to {{StreamCache}}. For that you need to explicit enable [Stream Caching] on the route or CamelContext.
* Removed the artifacts {{camel-spring-tests.jar}} and {{camel-blueprint-tests.jars}} from being released to [Maven Central Repository|http://repo2.maven.org/maven2/].
* Upgraded to use Commons Net 2.2 (was 2.0) in [FTP|FTP2] component.
* Splited camel transport for cxf out of camel-cxf module. If you want to use camel transport for cxf or the cxfbean component, you need to add the dependency of camel-cxf-transport.

h2. Getting the Distributions

h3. Binary Distributions

|| Description || Download Link || PGP Signature file of download ||
| Windows Distribution | [apache-camel-2.8.0.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.8.0/apache-camel-2.8.0.zip] | [apache-camel-2.8.0.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.8.0/apache-camel-2.8.0.zip.asc] |
| Unix/Linux/Cygwin Distribution | [apache-camel-2.8.0.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.8.0/apache-camel-2.8.0.tar.gz] | [apache-camel-2.8.0.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.8.0/apache-camel-2.8.0.tar.gz.asc] |
{info:title=The above URLs use redirection}
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|http://www.mozilla.com/en-US/firefox/]

{info}

h3. Source Distributions

|| Description || Download Link || PGP Signature file of download ||
| Source for Windows | [apache-camel-2.8.0-src.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.8.0/apache-camel-2.8.0-src.zip] | [apache-camel-2.8.0-src.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.8.0/apache-camel-2.8.0-src.zip.asc] |

| Source for Unix/Linux/Cygwin | [apache-camel-2.8.0-src.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.8.0/apache-camel-2.8.0-src.tar.gz] | [apache-camel-2.8.0-src.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.8.0/apache-camel-2.8.0-src.tar.gz.asc] |

h3. 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|http://maven.apache.org/guides/introduction/introduction-to-the-pom.html] is:
{code:xml}
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-core</artifactId>
  <version>2.8.0</version>
</dependency>
{code}

h3. SVN Tag Checkout

{code}
svn co http://svn.apache.org/repos/asf/camel/tags/camel-2.8.0
{code}

h2. Changelog

For a more detailed view of new features and bug fixes, see the:
* [release notes for 2.8.0|http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311211&styleName=Html]