Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added routebox component since it's part of 2.6
Wiki Markup
h1. Camel 2.6.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.6.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)

* Fixed issue in OSGi with refreshing Camel bundles causing a race condition when discovering type converters
* Introduced [ScheduledRoutePolicy] with the [Quartz] component
* Java DSL [RouteBuilder] now fails if {{onException}} and the likes are not configured before routes, which they must.
* Easier to debug routes from {{camel-test}} using the [Debugger]
* Fixed problem installing {{camel-cxf}} feature on Apache Karaf.
* The [EIP] now supports [property placeholders|Properties] in the {{String}} based options (a few spots in Java DSL where its not possible). For example: {code:xml}<convertBodyTo type="String" charset="{{foo.myCharset}}"/>{code} 
* Introduced [ScheduledRoutePolicy] to allow you to schedule when routes should be active.
* Introduced {{stepwise}} option to [FTP|FTP2] component to allow end users to control how to traverse directories of the FTP servers. This allows you to set {{stepwise=false}} to return back to the behavior from Camel 2.0 - 2.4. See more at the [FTP|FTP2] documentation.
* Added {{separator}} option to [FTP|FTP2] component to allow end users to control what path separator to use when uploading files to remote FTP servers. For example if a Windows based FTP server only accept Windows paths, then you can set this option to {{Windows}}.
* [Thread names|Threading Model] now outputs [CamelContext] name which makes it easier to differentiate when running multiple Camel applications in the same JVM.
* Introduced {{contentCache}} option to [XSLT] component to allow easy reloading of stylesheets during development.
* Improved [Camel JMX] to always find next free name when registering in JMX and existing name exists (to remedy name clash). This makes it easier when deploying muliple WARs in the same JVM where the Camel applications may have same [CamelContext] id. In OSGi the name in JMX now has the bundle id as prefix.
* Fixed [BeanShell] language
* [Quartz] now supports using older versions (eg versions 1.6/1.7) of quartz JARs.
* The [Aggregator|Aggregator2] EIP will use a synchronous invocation when processing completed aggregated [Exchange]s, when not running in parallel mode. This ensures no internal task queue is used, which otherwise could stack up tasks and under certain conditions eat up memory. Enable {{parallelProcessing}} if you want to use a separate thread for processing completed aggregated [Exchange]s.
* [LDAP] supports paging.
* [CXF] and [CXFRS] use the CXF continuation API when using CXF 2.3.x.
* You can access the CXF Message from the Camel message header by using the key "CamelCxfMessage" after the [CXF] consumer.
* Fixed a rare situation in which an [Exchange] could be lost during graceful shutdown on the [SEDA] endpoints, usually more apparent on high volume systems.
* Improved support for Locale in [Bindy] for Number and Date formats.
* Fixed [Multicast], [Splitter], [Recipient List] to work as the [Pipes And Filters] would do, breaking to continue routing if a sub exchange failed and was handled by an [Exception Clause]. Previously you would have to detect this manually in the {{AggregationStrategy}}. 
* Constant fields from [Exchange] can be referred in the [DSL] from a String attribute using the class type style. This makes the Java DSL and Spring XML more similar. And you got type safe as Camel throws exception if you had a typo.
For example: {code:xml}<setHeader headerName="Exchange.FILE_NAME"><constant>myfile.txt</constant></setHeader>{code} 
* [Exchange] now contains the creation timestamp when it was created as a {{java.util.Date}} object stores as a property with the key {{Exchange.CREATION_TIMESTAMP}}
* Camel fails fast on startup if [Load Balancer] has been misconfigured, such as configuring two different load balancers in one
* Fixed {{markRollbackOnlyLast}} when used with inner/outer transactions.
* {{InterceptStrategy}} is now default ordered in the order they are added to the [CamelContext]. However you can dictate the order by implementing the {{org.apache.camel.util.Ordered}} interface. 
* Made it easier to load routes from XML files using {{loadRoutesDefinition}} method from [CamelContext].
* Added support for custom multipart filters in [Jetty].
* Using [Processor] or [Bean] in routes is now also enlisted in JMX for management.
* The ObjectName for {{processor}} in JMX is now always using the node id it has been assigned in the route.
* Using a custom [Processor] or [Bean] will be enlisted in JMX having its custom attributes/operations listed. For example just use the Spring JMX annotations to easily expose the attributes/operations. See more [details here|Why is my processor not showing up in JConsole].
* Fixed some issue with the {{camel-blueprint}} component.
* Added features to {{camel-blueprint}} component so its on-par with feature set from Spring XML.
* Fixed [FTP|FTP2] producer may creating directory using windows path separators.
* Fixed [InterceptSendToEndpoint|Intercept] not honoring {{stop}} DSL to stop immediately and not sending the [Exchange] to the intercepted [Endpoint].
* Improved the [Irc] component
* Added {{matchsMockWaitTime}} method to [NotifyBuilder] which is a convenient method to use when testing with mocks and want to match using timeout.
* {{org.apache.camel.spi.EventNotifier}} events for [Exchange] done is now fired *after* [OnCompletion] has been executed. 
* Added option {{deleteOutputFile}} to [XSLT] component.
* [Idempotent Consumer]'s {{IdempotentRepository}} is now managed in [JMX|Camel JMX].
* [File|File2] and [FTP|FTP2] producers now support writing _done_ files after the target file has been written, using the new {{doneFileName}} option.
* [File|File2] and [FTP|FTP2] consumers now support only consuming files if a _done_ file exists, using the new {{doneFileName}} option.
* [Thread Pools|Threading Model] is now named more intuitive in [JMX|Camel JMX], making it much easier for end user to spot which pool is used for what. And it provides more information where the pool is used.
* [Data Format] now supports {{Service}} and {{CamelContextAware}} callbacks which means its much easier to perform custom initialization logic in your data formats.
* Fixed [Printer] component to use exact same constants for {{mediaSize}} option as from the Java Printer API.
* Fixed issue with route scoped [Exception Clause] may pick [Exception Clause] defined on another route, if exception is the same type. Also ensures that route scoped is preferred over context scoped.
* Fixed [Bindy] fixed length to throw exception if field exceeds allowed length. Added option {{clip}} on {{@DataField}} to allow [Bindy] to clip the field so it fits the length, instead of thrown an exception.
* Added header {{Exchange.REDELIVERY_MAX_COUNTER}} to message when Camel performs a redelivery attempt. This header contains the maximum redelivery setting. It may be {{null}} if you use unlimited redelivery attempts or use {{retryWhile}}.
* [JMS] producer using {{InOnly}} MEP now supports {{JMSReplyTo}} configured on either endpoint, or provided as message header. The message send to the JMS destination will now contain the {{JMSReplyTo}} information. The [JMS] producer which send the message will still be {{InOnly}} and not expect/wait for a reply but continue immediately.
* Fixed [JMS] producer, when a {{JMSReplyTo}} header was provided as a message header, removing any {{queue:}} or {{topic:}} prefix causing the reply to destination to be resolved correctly (eg avoiding having {{queue:}} in the queue name).
* [JMS] producer now honors, if reply to was disabled using {{disableReplyTo=true}}, when a {{JMSReplyTo}} header was provided.
* [Http], [Jetty], [Servlet] and {{camel-http4}} now supports content type {{application/x-java-serialized-object}} on both the producer and consumer side. This allows you to transfer serialized Java objects over http.
* Added option {{transferException}} to [Http], [Jetty] and [Servlet], which allows you to return back caused exceptions from the consumer side as serialized objects. On the producer side the caused exception will be thrown instead of the generic {{HttpOperationFailedException}}.
* [Web console] now displays some basic route statistics if [JMX|Camel JMX] is enabled.
* Fixed [Jetty] may throw NPE during heavy load.
* [JPA] {{JpaTraceEventMessage}} now uses {{@Lob}} for fields which may contain a lot of data, such as message body.
* Fixed [Bindy] when using quoted CSV records and fixed when using pipeline delimiter.* Fixed [Bindy] when using quoted CSV records and fixed when using pipeline delimiter.
* [Throughput logger|Log] now supports logging per interval (timer based).
* Fixed an issue with [Splitter] causing exception mistakenly from one sub-message being propagated to the next sub-message.
* [XQuery] now strips all whitespaces by default; there is an option to changes this to ignorable whitepsaces only.
* [Quartz] now enforces trigger name/group to be unique within the given component. Will throw exception on name clash detected. This behavior does not apply for clustered quartz.
* Fixed [Splitter] using too much memory when running in parallel mode. Now it aggregates on-the-fly and memory consumption is low and stable.
* [Bean] now has a type option which you can use if you use method overloading in your Bean and prevent Camel to fail with an {{AmbiguousMethodCallException}}.
* Added {{Main}} class to {{camel-core}} so you can do: [Running Camel standalone and have it keep running]
* Added [JDBC|JDBC-AggregationRepository] based persistent support for [Aggregator|Aggregator2] EIP

h3. New [Enterprise Integration Patterns]

h3. New [Components]

* [EventAdmin]
* [JDBC-AggregationRepository]
* [JMX]
* [Kestrel]
* [Pax-Logging]
* [Spring Web Services]
* [SQS|sqs]
* [Routebox]

h3. New DSL

* Added {{excludePattern}} parameter to {{removeHeaders}} DSL.

h3. New Annotations

h3. New [Data Formats|Data Format]

* [JiBX]
* [SysLog]

h3. New [Languages]

h3. New [Examples]

* [JMX Component Example]
* [Simple Jira Bot]
* [Spring Web Services Example|Spring WS Example]

h3. New [Tutorials]

h2. API breaking

* {{camel-test}} JAR in the {{CamelSpringTestSupport}} classes now returns a more generic {{AbstractApplicationContext}} type in the {{createApplicationContext}} method.
* Added {{prepareShutdown}} method to {{ShutdownAware}} SPI interface.
* {{org.apache.camel.spi.IdempotentRepository}} now extends {{org.apache.camel.Service}}.
* The {{onThreadPoolAdd}} method on {{LifecycleStrategy}} has additional parameters for information where the thread pool is used.

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.
* 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-script}} which uses {{ScriptEngineManager}} from the JDK, cannot load script engines from packages outside the JDK.

h2. Important changes to consider when upgrading

* Upgraded to Spring 3.0.5
* Upgraded to Apache CXF 2.3.1 (although CXF 2.2.11 is still supported)
* Upgraded to Jetty 7.2.2.v20101205
* The Java DSL now enforces {{onException}} and the likes to be defined *before* routes, if not Camel will fail starting the route.
* The [Aggregator|Aggregator2] EIP will use a synchronous invocation when processing completed aggregated [Exchange]s, when not running in parallel mode. This ensures no internal task queue is used, which otherwise could stack up tasks and under certain conditions eat up memory. Enable {{parallelProcessing}} if you want to use a separate thread for processing completed aggregated [Exchange]s.
* Camel now fails fast if staring a {{LifecycleStrategy}} fails on startup. For example if there is issue with [JMX|Camel JMX] that will now cause Camel to not startup at all. If you have trouble with JMX before you can disable JMX on Camel and allow it to startup.
* {{ManagementAware}} has been @deprecated. Just enrich your class with the Spring JMX annotations, if you want custom management of your components, endpoints, processors and so fort. See more at [Why is my processor not showing up in JConsole].
* [Data Format] now supports {{Service}} and {{CamelContextAware}} callbacks which means its much easier to perform custom initialization logic in your data formats.
* The {{mediaSize}} option on [Printer] now uses exact same constants as the Java Printer API. Which means it uses underscores instead of hyphens in the constants.
* [JMS] producer has been improved to support {{JMSReplyTo}} for [Exchange] with {{InOnly}} MEP. The {{JMSReplyTo}} will now be provided in the send JMS message.
* [JPA] {{JpaTraceEventMessage}} now uses {{@Lob}} for fields which may contain a lot of data, such as message body.
* [Quartz] now enforces trigger name/group to be unique within the given component. Will throw exception on name clash detected. This behavior does not apply for clustered quartz.


h2. Getting the Distributions

h3. Binary Distributions

|| Description || Download Link || PGP Signature file of download ||
| Windows Distribution | [apache-camel-2.6.0.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.6.0/apache-camel-2.6.0.zip] | [apache-camel-2.6.0.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.6.0/apache-camel-2.6.0.zip.asc] |
| Unix/Linux/Cygwin Distribution | [apache-camel-2.6.0.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.6.0/apache-camel-2.6.0.tar.gz] | [apache-camel-2.6.0.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.6.0/apache-camel-2.6.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.6.0-src.zip|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.6.0/apache-camel-2.6.0-src.zip] | [apache-camel-2.6.0-src.zip.asc|http://www.apache.org/dist/camel/apache-camel/2.6.0/apache-camel-2.6.0-src.zip.asc] |

| Source for Unix/Linux/Cygwin | [apache-camel-2.6.0-src.tar.gz|http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.6.0/apache-camel-2.6.0-src.tar.gz] | [apache-camel-2.6.0-src.tar.gz.asc|http://www.apache.org/dist/camel/apache-camel/2.6.0/apache-camel-2.6.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.6.0</version>
</dependency>
{code}

h3. SVN Tag Checkout

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

h2. Changelog

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