You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 74 Next »

Camel 2.9.0 release (currently in progress)

Unknown macro: {div}

Unknown macro: {div}

New and Noteworthy

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

  • Introduced ThreadPoolFactory with a simpler API for 3rd party SPI. See Threading Model for more details.
  • The SOAP data format now supports using multiple parameters on the JAXB objects.
  • The Bean component now supports specifying parameter values to use directly in the method syntax. See more details at Bean Binding. For example to invoke a bean with body as first parameter, and a boolean true as second you can now do: .to("bean:myBean?method=myMethod(body, true)")
  • Improved labels of all model definitions which appear in Tracer output
  • Reduced dependency for camel-core to not require commons-management JAR anymore
  • Added blueprint support of cxfrs endpoint.
  • Camel no longer depend on using Spring JARs for having Camel enlisted in JMX.
  • Introduced a set of Camel JMX annotations in org.apache.camel.api.management that can be used to easily instrument Camel Components, EIPs, custom Processors, Beans etc. for being managed in JMX. Using the Spring JMX annotations is still supported (you would need camel-spring on the classpath).
  • Updated the Aggregator2 to allow for manually completing all exchange groups by sending a message containing the header Exchange.AGGREGATION_COMPLETE_ALL_GROUPS set to true.
  • Updated the Aggregator2 to support forceCompletionOnStop option to complete all current aggregated exchanges when the context is stopped.
  • Removed dependency on Spring JARs in the following components: Validation, XSLT, Velocity, FreeMarker, Flatpack, StringTemplate, iBATIS, Jing, MSV, XQuery, and Test
  • Using pollEnrich with a file/ftp endpoint will now only poll on demand, beforehand the polling could be started when the route started.
  • Added option ReplyToType on JMS to allow people to control which kind of reply queue they are using (temporary, shared, exclusive). Added support for exclusive reply queues. Mind they have some limitations, by which the shared dont have. So use exclusive with a bit caution.
  • Added wereSentTo to NotifyBuilder allowing to set expectation that Exchanges was sent to the given endpoint uri.
  • Bindy in CSV format now uses trim, clip, and length attributes on @DataField when marshalling.
  • Improved managed browsable endpoints (JMX) so you can browse all/range messages and whether to include message body or not.
  • File and FTP endpoints is now browsable endpoints. For example using JMX people can browse the endpoint listing available files. The returned data does not contain the actual file body to avoid loading big data into memory.
  • Added replaceFromWith to AdviceWith making it easy to swap a route input endpoint with something else, for easier unit testing.
  • Added Java DSL support for route autoStartup(String) and autoStartup(boolean)
  • Switched to a better performing non locking endpoint cache based on Google's ConcurrentLinkedHashMap.
  • Added isUseAdviceWith to Camel Test which allows end users to tell Camel that the unit tests uses AdviceWith which allows you to defer starting CamelContext until after the adviceWith has been executed.
  • Added filtersRef option to Jetty endpoint, and it supports to setup the Filters on the Jetty endpoints.
  • Added ciphers option to the SFTP endpoint to allow configuration of the ciphers used by default.
  • Added fastExitsCheck option to the SFTP FTP endpoint to check the file exits fast.
  • Added errorHandler option to the JMS component which allows you to set a org.springframework.util.ErrorHandler to be invoked in case of any uncaught exceptions thrown while processing a Message.
  • Added idleConsumerLimit option to the JMS component which sets the limit for the number of consumers that are allowed to be idle at any given time.
  • Simple language has a much better syntax parser, being able to report what and where syntax errors are. Added unary operators, which for example can be used to increment counters.
  • Simple language now supports nested functions, so you can do "${header.${header.bar}}", for example to refer to a header key from another header.
  • Simple language can now configure custom start/end tokens for its built-in functions.
  • The JPA component has been upgraded from using the JPA1 spec to use JPA2 spec.
  • The CSV component now always returns a List<List> regardless if 1 or more rows returned, to be consistent.
  • Resequencer now pre validates incoming Exchange and throws CamelExchangeException if invalid. Added new option ignoreInvalidExchanges to suppress the exception and ignore invalid exchanges.
  • Improved existing and added more Karaf Camel commands.
  • Improved Bean component and method call expressions to be able to invoke static methods, without creating a new instance of the class.
  • JMX now exposes average load statics on CamelContext and Route mbeans. Its similar to unix load stats per 1, 5 and 15 minutes.
  • Added support for minDepth and maxDepth option on the FTP consumers.
  • Improved the AWS-S3 component to support more headers in the producer.

Fixed issues

  • Fixed issue with Properties component may cache duplicates and thus take up unnecessary memory in the cache
  • Fixed issue with Tracer out exchanges when using Asynchronous Processing by the Asynchronous Routing Engine
  • Fixed issue with Components or Endpoints not being registered in JMX when using POJO Producing, POJO Consuming or other Camel bean annotations.
  • Fixed issue which could cause DefaultUnitOfWork to throw a java.util.EmptyStackException under heavy load
  • Fixed issue with MDC logging not remembering old values, for example when using a ProducerTemplate from within routes to send new messages.
  • Fixed issue when invoking a Bean and that bean is using a @Bean in its method signature, causing the @Bean to not invoke its intended method
  • Fixed issue with Bindy unmarshalling in key value mode when using @OneToMany bindings, may cause inconsistency for multiple threaded unmarshalling
  • Fixed issue with ExchangeSentEvent being fired to early when being sent to asynchronously endpoint. Now its being fired when sent is done.
  • Fixed issue with OSGi Blueprint when consuming JAXB annotated objects from ActiveMQ causing ClassCastException's.
  • Fixed issue with using OnException and using redeliveryPolicyRef which could cause the Error Handler to fail with an assertion error at first redelivery attempt.
  • Fixed issue with using doneFile option on FTP when from a Windows computer connecting to a Unix FTP server, due to wrong path separator in use.
  • Fixed issue with Bindy in CSV mode when marshalling not using correct separator char if given an escaped separator char on the model class.
  • Fixed issue with evaluation of Simple language not being as fast as it could be.
  • Fixed issue with File consumer not auto creating start dir if having dot in name.
  • Fixed issue with Splitter, Recipient List and Routing Slip throwing exceptions from custom expressions, not being triggered by Exception Clauses.

New Enterprise Integration Patterns

New Components

DSL Changes

New Annotations

  • Added some JMX annotations in org.apache.camel.spi.management that replace the spring jmx annotations to make camel-core independent of spring

New Data Formats

New Languages

New Examples

New Tutorials

API breaking

We did some fairly large refactoring in preparation for camel 3.0. In Camel 2.9.0 most changes should be compatible. If you hit any problematic API changes please report in jira and we will try to add compatibility stubs in a 2.9.x release.
The main goal of this refactoring is to prepare for a self contained minimal API that can be used as a basis for component development.
We already did some changes in regard to this in 2.9.0 to make backporting 3.0 features easier once we start with camel 3.0.

  • The class ExecutorServiceStrategy is deprecated in favor of a new ExecutorServiceManager class, which have a slightly reduced and improved API. See Threading Model for more details.
  • The org.apache.camel.component.ResourceBasedComponent class from camel-spring has been deprecated. Use DefaultComponent instead.
  • The org.apache.camel.component.ResourceBasedEndpoint class from camel-spring has been deprecated in favor of a new org.apache.camel.component.ResourceEndpoint in camel-core, and its dependency on Spring JARs has been removed. Use the new APIs on ResourceEndpoint to load resources.
  • Changed the method beforePoll slightly in the org.apache.camel.PollingConsumerPollingStrategy class.
  • ServiceSupport and EventNotifierSupport classes are moved to org.apache.camel.support. This package is meant for mostly abstract base classes that make it easier to implement the API. To keep compatibility the old classes are kept as @Deprecated versions (see CAMEL-4358)
  • ServiceSupport now does no handle child services anymore (was used only in two places in camel-core). A new class ChildServiceSupport now handles this case. Additionally the org.apache.camel.StatefulService interface was created which allows to access ServiceSupport methods without knowing the implementation.
  • DataFormatResolver does not support resolveDataFormatDefinition anymore. The current implementations for OSGi and Default where exactly the same so this code was moved to DefaultCamelContext. If this is needed please open a jira issue
  • All methods in CamelContext that reference model elements where deprecated. An additional interface org.apache.camel.model.ModelCamelContext was created to hold these methods
  • Ordered interface was moved from org.apache.camel.util to org.apache.camel
  • BytesSource and StringSource were moved from org.apache.camel.converter.jaxp to org.apache.camel as they are used in several places
  • TimeoutMap interface was moved from org.apache.camel.util to org.apache.camel
  • DefaultTimeoutMap was moved from org.apache.camel.util to org.apache.camel.support as it needs access to ServiceSupport
  • Moved some management interfaces from org.apache.camel.management to org.apache.camel.spi.management
  • Moved DefaultChannel from org.apache.camel.processor to org.apache.camel.processor.interceptor

Internal/Non API refactorings that may affect users

  • org.apache.camel.WrappedFile interface was introduced as abstraction of GenericFile for usage outside the file component
  • ModelHelper was moved from org.apache.camel.util to org.apache.camel.model to avoid references from util to model

Known Issues

  • The Tracer may not output all details for some situations such as when using onCompletion or intercept etc.
  • 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 source code cannot fully build with JDK 7

Dependency Upgrades

  • AHC 1.6.4 to 1.6.5
  • CXF 2.4.1 to 2.4.2
  • Jackrabbit 1.5.5 to 1.6.4
  • Groovy 1.8.0 to 1.8.2
  • HawtDB 1.5 to 1.6
  • Http4 4.1.1 to 4.1.2
  • Scala 2.9.0 to 2.9.1
  • Scalate 1.5.0 to 1.5.2
  • Smack 3.1.0 to 3.2.0
  • XStream 1.3.1 to 1.4.1

Important changes to consider when upgrading

  • The XSLT, and Validation components has been moved from camel-spring to camel-core as they no longer depend upon Spring JARs
  • Building the source with Apache Maven 2.x is deprecated and support for that is to be removed in the next release.
  • Debugger is now disabled by default in Camel Test. You would need to override isUseDebugger() method and return true to enable it.
  • Simple language improved syntax parser. Simple is now more strict and will report syntax errors for invalid input. For example Predicates now requires literal texts to be enclosed in quotes, just as any programming language such as Java would do. Range operator also requires the range to be enclosed in quotes as well. See more details at Simple.
  • The JPA component has been upgraded from using the JPA1 spec to use JPA2 spec.
  • The CSV component now always returns a List<List> regardless if 1 or more rows returned, to be consistent.

Notice

  • Removed ANT support for the Examples
  • The commons-management JAR is no longer required as dependency.
  • Camel no longer depend on using Spring JARs for having Camel enlisted in JMX.
  • Building the source with Apache Maven 2.x is deprecated and support for that is to be removed in the next release.

Getting the Distributions

Binary Distributions

Description

Download Link

PGP Signature file of download

Windows Distribution

apache-camel-2.9.0.zip

apache-camel-2.9.0.zip.asc

Unix/Linux/Cygwin Distribution

apache-camel-2.9.0.tar.gz

apache-camel-2.9.0.tar.gz.asc

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

Source Distributions

Description

Download Link

PGP Signature file of download

Source for Windows

apache-camel-2.9.0-src.zip

apache-camel-2.9.0-src.zip.asc

Source for Unix/Linux/Cygwin

apache-camel-2.9.0-src.tar.gz

apache-camel-2.9.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.9.0</version>
</dependency>

SVN Tag Checkout

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

Changelog

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

  • No labels