You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2017/03/14 11:20:08 UTC

svn commit: r1008308 [2/3] - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache camel-219-release.html jpa.html

Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Tue Mar 14 11:20:07 2017
@@ -3542,11 +3542,11 @@ The tutorial has been designed in two pa
 While not actual tutorials you might find working through the source of the various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
 
 <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</h2><p>&#160;</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Thanks</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This tutorial was kindly donated to Apache Camel by Martin Gilday.</p></div></div><h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the reader through the stages of creating a project which uses Camel to facilitate the routing of messages from a JMS queue to a <a shape="rect" class="external-link" href="http://www.springramework.org" rel="nofollow">Spring</a> service. The route works in a synchronous fashion returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1489396766060 {padding: 0px;}
-div.rbtoc1489396766060 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1489396766060 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1489490301520 {padding: 0px;}
+div.rbtoc1489490301520 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1489490301520 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1489396766060">
+/*]]>*/</style></p><div class="toc-macro rbtoc1489490301520">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-About">About</a></li><li><a shape="rect" href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the Server</a>
@@ -5661,11 +5661,11 @@ So we completed the last piece in the pi
 <p>This example has been removed from <strong>Camel 2.9</strong> onwards. Apache Axis 1.4 is a very old and unsupported framework. We encourage users to use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1489396766716 {padding: 0px;}
-div.rbtoc1489396766716 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1489396766716 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1489490302292 {padding: 0px;}
+div.rbtoc1489490302292 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1489490302292 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1489396766716">
+/*]]>*/</style><div class="toc-macro rbtoc1489490302292">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#BookInOnePage-RunningtheExample">Running the Example</a></li></ul>
@@ -16866,11 +16866,11 @@ template.send(&quot;direct:alias-verify&
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.28">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a shape="rect" href="data-format.html">Data Format</a></li></ul> <h2 id="BookInOnePage-CXFComponent">CXF Component</h2><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF as a consumer, the <a shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows you to factor out how message payloads are received from their processing as a RESTful or SOAP web service. This has the potential of using a multitude of transports to consume web 
 services. The bean component's configuration is also simpler and provides the fastest method to implement web services using Camel and CXF.</p></div></div><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p></div></div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1489396782922 {padding: 0px;}
-div.rbtoc1489396782922 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1489396782922 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1489490326480 {padding: 0px;}
+div.rbtoc1489490326480 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1489490326480 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1489396782922">
+/*]]>*/</style></p><div class="toc-macro rbtoc1489490326480">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect" href="#BookInOnePage-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the dataformats</a>
@@ -21717,10 +21717,10 @@ monitor.start();
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><p>Sending to the endpoint</p><p>You can store a Java entity bean in a database by sending it to a JPA producer endpoint. The body of the <em>In</em> message is assumed to be an entity bean (that is, a POJO with an <a shape="rect" class="external-link" href="http://java.sun.com/javaee/5/docs/api/javax/persistence/Entity.html" rel="nofollow">@Entity</a> annotation on it) or a collection or array of entity beans.</p><p>If the body is a List of entities, make sure to use <strong>entityType=java.util.ArrayList</strong> as a configuration passed to the producer endpoint.</p><p>If the body does not contain one of the previous listed types, put a <a shape="rect" href="message-translator.html">Message Translator</a> in front of the endpoint to perform the necessary conversion first.</p><h3 id="BookInOnePage-Consumingfromtheendpoint.2">Consuming from the endpoint</h3><p>Consuming messages from a JPA consumer endpoint removes (or updates) entity beans in the database. This allows 
 you to use a database table as a logical queue: consumers take messages from the queue and then delete/update them to logically remove them from the queue.</p><p>If you do not wish to delete the entity bean when it has been processed (and when routing is done), you can specify <code>consumeDelete=false</code> on the URI. This will result in the entity being processed each poll.</p><p>If you would rather perform some update on the entity to mark it as processed (such as to exclude it from a future query) then you can annotate a method with <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-jpa/apidocs/org/apache/camel/component/jpa/Consumed.html">@Consumed</a> which will be invoked on your entity bean when the entity bean when it has been processed (and when routing is done).</p><p>From <strong>Camel 2.13</strong> onwards you can use <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-jpa/apidocs/org/apache/came
 l/component/jpa/PreConsumed.html">@PreConsumed</a> which will be invoked on your entity bean before it has been processed (before routing).</p><p>If you are consuming a lot (100K+) of rows and experience OutOfMemory problems you should set the maximumResults to sensible value.</p><p><strong>Note:</strong> Since <strong>Camel 2.18</strong>, JPA now includes a <code>JpaPollingConsumer</code> implementation that better supports Content Enricher using <code>pollEnrich()</code> to do an on-demand poll that returns either none, one or a list of entities as the result.</p><h3 id="BookInOnePage-URIformat.34">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Sending to the endpoint</p><p>You can store a Java entity bean in a database by sending it to a JPA producer endpoint. The body of the <em>In</em> message is assumed to be an entity bean (that is, a POJO with an <a shape="rect" class="external-link" href="http://java.sun.com/javaee/5/docs/api/javax/persistence/Entity.html" rel="nofollow">@Entity</a> annotation on it) or a collection or array of entity beans.</p><p>If the body is a List of entities, make sure to use <strong>entityType=java.util.ArrayList</strong> as a configuration passed to the producer endpoint.</p><p>If the body does not contain one of the previous listed types, put a <a shape="rect" href="message-translator.html">Message Translator</a> in front of the endpoint to perform the necessary conversion first.</p><p>From&#160;<strong>Camel 2.19</strong>&#160;onwards you can use <strong>query</strong>, <strong>namedQuery</strong> and <strong>nativeQuery&#160;</strong>option for the producer as well to retri
 eve a set of entities or execute bulk update/delete.</p><h3 id="BookInOnePage-Consumingfromtheendpoint.2">Consuming from the endpoint</h3><p>Consuming messages from a JPA consumer endpoint removes (or updates) entity beans in the database. This allows you to use a database table as a logical queue: consumers take messages from the queue and then delete/update them to logically remove them from the queue.</p><p>If you do not wish to delete the entity bean when it has been processed (and when routing is done), you can specify <code>consumeDelete=false</code> on the URI. This will result in the entity being processed each poll.</p><p>If you would rather perform some update on the entity to mark it as processed (such as to exclude it from a future query) then you can annotate a method with <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-jpa/apidocs/org/apache/camel/component/jpa/Consumed.html">@Consumed</a> which will be invoked on your entity bea
 n when the entity bean when it has been processed (and when routing is done).</p><p>From <strong>Camel 2.13</strong> onwards you can use <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-jpa/apidocs/org/apache/camel/component/jpa/PreConsumed.html">@PreConsumed</a> which will be invoked on your entity bean before it has been processed (before routing).</p><p>If you are consuming a lot (100K+) of rows and experience OutOfMemory problems you should set the maximumResults to sensible value.</p><p><strong>Note:</strong> Since <strong>Camel 2.18</strong>, JPA now includes a <code>JpaPollingConsumer</code> implementation that better supports Content Enricher using <code>pollEnrich()</code> to do an on-demand poll that returns either none, one or a list of entities as the result.</p><p>&#160;</p><h3 id="BookInOnePage-URIformat.34">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[jpa:entityClassName[?options]
 ]]></script>
-</div></div><p>For sending to the endpoint, the <em>entityClassName</em> is optional. If specified, it helps the <a shape="rect" href="type-converter.html">Type Converter</a> to ensure the body is of the correct type.</p><p>For consuming, the <em>entityClassName</em> is mandatory.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookInOnePage-Options.49">Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>entityType</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><em>entityClassName</em></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Overrides the <em>entityClassName</e
 m> from the URI.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>persistenceUnit</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The JPA persistence unit used by default.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumeDelete</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> If <code>true</code>, the entity is deleted after it is consumed; if <code>false</code>, the entity is not deleted.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumeLockEntity</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Specifies whether or not to set an exclus
 ive lock on each entity bean while processing the results from polling.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>flushOnSend</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA producer only:</strong> Flushes the <a shape="rect" class="external-link" href="http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html" rel="nofollow">EntityManager</a> after the entity bean has been persisted.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maximumResults</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Set the maximum number of results to retrieve on the <a shape="rect" class="external-link" href="http://java.sun.com/javaee/5/docs/api/javax/persistence/Query.html" rel="nofollow">Q
 uery</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transactionManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>This option is <a shape="rect" href="registry.html">Registry</a> based which requires the <code>#</code> notation so that the given <code>transactionManager</code> being specified can be looked up properly, e.g. <code>transactionManager=#myTransactionManager</code>. It specifies the transaction manager to use. If none provided, Camel will use a <code>JpaTransactionManager</code> by default. Can be used to set a JTA transaction manager (for integration with an EJB container).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.delay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>500</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong
 > Delay in milliseconds between each poll.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.initialDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Milliseconds before polling starts.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.useFixedDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Set to <code>true</code> to use fixed delay between polls, otherwise fixed rate is used. See <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html" rel="nofollow">ScheduledExecutorService</a> in JDK for details.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><
 p><code>maxMessagesPerPoll</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> An integer value to define the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to avoid polling many thousands of messages when starting up the server. Set a value of 0 or negative to disable.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.query</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> To use a custom query when consuming data.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.namedQuery</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only
 :</strong> To use a named query when consuming data.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.nativeQuery</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> To use a custom native query when consuming data. You may want to use the option <code>consumer.resultClass</code> also when using native queries.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.parameters</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12: JPA consumer only:</strong> This option is <a shape="rect" href="registry.html">Registry</a> based which requires the <code>#</code> notation. This key/value mapping is used for building the query parameters. It's is expected to be of the generic type <code>java.util.Map&lt;String,
  Object&gt;</code> where the keys are the named parameters of a given JPA query and the values are their corresponding effective values you want to select for.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.resultClass</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.7: JPA consumer only:</strong> Defines the type of the returned payload (we will call <code>entityManager.createNativeQuery(nativeQuery, resultClass)</code> instead of <code>entityManager.createNativeQuery(nativeQuery)</code>). Without this option, we will return an object array. Only has an affect when using in conjunction with native query when consuming data.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.transacted</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="co
 nfluenceTd"><p><strong>Camel 2.7.5/2.8.3/2.9: JPA consumer only:</strong> Whether to run the consumer in transacted mode, by which all messages will either commit or rollback, when the entire batch has been processed. The default behavior (false) is to commit all the previously successfully processed messages, and only rollback the last failed message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.lockModeType</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>WRITE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.2/2.12:</strong> To configure the lock mode on the consumer. The possible values is defined in the enum <code>javax.persistence.LockModeType</code>. The default value is changed to <code>PESSIMISTIC_WRITE</code> since <strong>Camel 2.13</strong>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.SkipLockedEntity</code></p></td><td colspan="1" r
 owspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.13:</strong> To configure whether to use NOWAIT on lock and silently skip the entity.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>usePersist</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5: JPA producer only:</strong> Indicates to use <code>entityManager.persist(entity)</code> instead of <code>entityManager.merge(entity)</code>. Note: <code>entityManager.persist(entity)</code> doesn't work for detached entities (where the EntityManager has to execute an UPDATE instead of an INSERT query)!</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>joinTransaction</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="conflue
 nceTd"><p><strong>Camel 2.12.3:</strong> camel-jpa will join transaction by default from Camel 2.12 onwards. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the <code>JpaComponent</code>, instead of having to set it on all endpoints.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="p1">usePassedInEntityManager</p></td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.12.4/2.13.1 JPA producer only:</strong> If set to true, then Camel will use the EntityManager from the header<p class="p1">JpaConstants.ENTITYMANAGER instead of the configured entity manager on the component/endpoint. This allows end users to control which entity manager will be in use.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">sharedEntityManager</td><td colspan="1" ro
 wspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong>&#160;whether to use spring's SharedEntityManager for the consumer/producer. A good idea may be to set joinTransaction=false if this option is true, as sharing the entity manager and mixing transactions is not a good idea.</td></tr></tbody></table></div><h3 id="BookInOnePage-MessageHeaders.10">Message Headers</h3><p>Camel adds the following message headers to the exchange:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelJpaTemplate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>JpaTemplate</code></p></td><td colspan=
 "1" rowspan="1" class="confluenceTd"><p><strong>Not supported anymore since Camel 2.12:</strong> The <code>JpaTemplate</code> object that is used to access the entity bean. You need this object in some situations, for instance in a type converter or when you are doing some custom processing. See <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-5932">CAMEL-5932</a> for the reason why the support for this header has been dropped.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelEntityManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>EntityManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12: JPA consumer / Camel 2.12.2: JPA producer:</strong> The JPA <code>EntityManager</code> object being used by <code>JpaConsumer</code> or <code>JpaProducer</code>.</p></td></tr></tbody></table></div></div>
+</div></div><p>For sending to the endpoint, the <em>entityClassName</em> is optional. If specified, it helps the <a shape="rect" href="type-converter.html">Type Converter</a> to ensure the body is of the correct type.</p><p>For consuming, the <em>entityClassName</em> is mandatory.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookInOnePage-Options.49">Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>entityType</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><em>entityClassName</em></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Overrides the <em>entityClassName</e
 m> from the URI.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>persistenceUnit</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The JPA persistence unit used by default.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumeDelete</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> If <code>true</code>, the entity is deleted after it is consumed; if <code>false</code>, the entity is not deleted.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumeLockEntity</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Specifies whether or not to set an exclus
 ive lock on each entity bean while processing the results from polling.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>flushOnSend</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA producer only:</strong> Flushes the <a shape="rect" class="external-link" href="http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html" rel="nofollow">EntityManager</a> after the entity bean has been persisted.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maximumResults</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Set the maximum number of results to retrieve on the <a shape="rect" class="external-link" href="http://java.sun.com/javaee/5/docs/api/javax/persistence/Query.html" rel="nofollow">Q
 uery</a>. <strong>Camel 2.19:</strong><span> it's also used for the producer when it executes a query.</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transactionManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>This option is <a shape="rect" href="registry.html">Registry</a> based which requires the <code>#</code> notation so that the given <code>transactionManager</code> being specified can be looked up properly, e.g. <code>transactionManager=#myTransactionManager</code>. It specifies the transaction manager to use. If none provided, Camel will use a <code>JpaTransactionManager</code> by default. Can be used to set a JTA transaction manager (for integration with an EJB container).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.delay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>500</
 code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Delay in milliseconds between each poll.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.initialDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Milliseconds before polling starts.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.useFixedDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> Set to <code>true</code> to use fixed delay between polls, otherwise fixed rate is used. See <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html" rel="nofollow">ScheduledExecuto
 rService</a> in JDK for details.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxMessagesPerPoll</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> An integer value to define the maximum number of messages to gather per poll. By default, no maximum is set. Can be used to avoid polling many thousands of messages when starting up the server. Set a value of 0 or negative to disable.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.query</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> To use a custom query when consuming data.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.namedQuery</code></p></td><td colspan="1" rowspan="1" class="confluenc
 eTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> To use a named query when consuming data.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.nativeQuery</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>JPA consumer only:</strong> To use a custom native query when consuming data. You may want to use the option <code>consumer.resultClass</code> also when using native queries.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.parameters</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12: JPA consumer only:</strong> This option is <a shape="rect" href="registry.html">Registry</a> based which requires the <code>#</code> notation. This key/value mapping is used for buil
 ding the query parameters. It's is expected to be of the generic type <code>java.util.Map&lt;String, Object&gt;</code> where the keys are the named parameters of a given JPA query and the values are their corresponding effective values you want to select for.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.resultClass</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.7: JPA consumer only:</strong> Defines the type of the returned payload (we will call <code>entityManager.createNativeQuery(nativeQuery, resultClass)</code> instead of <code>entityManager.createNativeQuery(nativeQuery)</code>). Without this option, we will return an object array. Only has an affect when using in conjunction with native query when consuming data.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.transacted</code></p></td><td colspan="1" 
 rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.7.5/2.8.3/2.9: JPA consumer only:</strong> Whether to run the consumer in transacted mode, by which all messages will either commit or rollback, when the entire batch has been processed. The default behavior (false) is to commit all the previously successfully processed messages, and only rollback the last failed message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumer.lockModeType</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>WRITE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.2/2.12:</strong> To configure the lock mode on the consumer. The possible values is defined in the enum <code>javax.persistence.LockModeType</code>. The default value is changed to <code>PESSIMISTIC_WRITE</code> since <strong>Camel 2.13</strong>.</p></td></tr><tr><td colspan="1" 
 rowspan="1" class="confluenceTd"><p><code>consumer.SkipLockedEntity</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.13:</strong> To configure whether to use NOWAIT on lock and silently skip the entity.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>usePersist</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5: JPA producer only:</strong> Indicates to use <code>entityManager.persist(entity)</code> instead of <code>entityManager.merge(entity)</code>. Note: <code>entityManager.persist(entity)</code> doesn't work for detached entities (where the EntityManager has to execute an UPDATE instead of an INSERT query)!</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>joinTransaction</code></p></td><td colspan="1" rows
 pan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.3:</strong> camel-jpa will join transaction by default from Camel 2.12 onwards. You can use this option to turn this off, for example if you use LOCAL_RESOURCE and join transaction doesn't work with your JPA provider. This option can also be set globally on the <code>JpaComponent</code>, instead of having to set it on all endpoints.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="p1">usePassedInEntityManager</p></td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.12.4/2.13.1 JPA producer only:</strong> If set to true, then Camel will use the EntityManager from the header<p class="p1">JpaConstants.ENTITYMANAGER instead of the configured entity manager on the component/endpoint. This allows end users to control which entity manager will be in use.</p></td>
 </tr><tr><td colspan="1" rowspan="1" class="confluenceTd">sharedEntityManager</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong>&#160;whether to use spring's SharedEntityManager for the consumer/producer. A good idea may be to set joinTransaction=false if this option is true, as sharing the entity manager and mixing transactions is not a good idea.&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span>query</span></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><span>To use a custom query. <strong>Camel 2.19:</strong> it can be used for producer as well.</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">namedQuery</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><span>To use a named query. <strong>Camel 2.19:</strong> it c
 an be used for producer as well.</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">nativeQuery</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">To use a custom native query. <span>You may want to use the option </span><code>resultClass</code><span> also when using native queries. <strong>Camel 2.19:</strong><span> it can be used for producer as well.</span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">parameters</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><span>This option is </span><a shape="rect" href="registry.html">Registry</a><span> based which requires the </span><code>#</code><span> notation. This key/value mapping is used for building the query parameters. It is expected to be of the generic type </span><code>java.util.Map&lt;String, Object&gt;</code><span> where the keys are the named parameters of a 
 given JPA query and the values are their corresponding effective values you want to select for. <strong>Camel 2.19:</strong><span> it can be used for producer as well. When it's used for producer, <a shape="rect" href="simple.html">Simple</a> expression can be used as a parameter value. It allows you to retrieve parameter values from the message body header and etc.</span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">resultClass</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><span>Defines the type of the returned payload (we will call </span><code>entityManager.createNativeQuery(nativeQuery, resultClass)</code><span> instead of </span><code>entityManager.createNativeQuery(nativeQuery)</code><span>). Without this option, we will return an object array. Only has an affect when using in conjunction with native query. <strong>Camel 2.19:</strong><span> it can be used for producer as well.</span></s
 pan></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">useExecuteUpdate</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.19: JPA producer only:</strong><span> To configure whether to use executeUpdate() when producer executes a query. When you use INSERT, UPDATE or DELETE statement as a named query, you need to specify this option to 'true'.</span></td></tr></tbody></table></div><h3 id="BookInOnePage-MessageHeaders.10">Message Headers</h3><p>Camel adds the following message headers to the exchange:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelJpaTemplate</code></p>
 </td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>JpaTemplate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Not supported anymore since Camel 2.12:</strong> The <code>JpaTemplate</code> object that is used to access the entity bean. You need this object in some situations, for instance in a type converter or when you are doing some custom processing. See <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-5932">CAMEL-5932</a> for the reason why the support for this header has been dropped.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelEntityManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>EntityManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12: JPA consumer / Camel 2.12.2: JPA producer:</strong> The JPA <code>EntityManager</code> object being used by <code>JpaConsumer</code> or <code>JpaProducer</c
 ode>.</p></td></tr></tbody></table></div></div>
 
 
 <h3 id="BookInOnePage-ConfiguringEntityManagerFactory">Configuring EntityManagerFactory</h3><p>Its strongly advised to configure the JPA component to use a specific <code>EntityManagerFactory</code> instance. If failed to do so each <code>JpaEndpoint</code> will auto create their own instance of <code>EntityManagerFactory</code> which most often is not what you want.</p><p>For example, you can instantiate a JPA component that references the <code>myEMFactory</code> entity manager factory, as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -21753,7 +21753,26 @@ public class MultiSteps {
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;jpa://org.apache.camel.examples.MultiSteps?consumer.nativeQuery=select * from MultiSteps where step = 1&quot;)
 .to(&quot;bean:myBusinessLogic&quot;);
 ]]></script>
-</div></div><p>If you use the native query option, you will receive an object array in the message body.</p><h3 id="BookInOnePage-Example.25">Example</h3><p>See <a shape="rect" href="tracer-example.html">Tracer Example</a> for an example using <a shape="rect" href="jpa.html">JPA</a> to store traced messages into a database.</p><h3 id="BookInOnePage-UsingtheJPAbasedidempotentrepository">Using the JPA based idempotent repository</h3><p>In this section we will use the JPA based idempotent repository.</p><p>First we need to setup a <code>persistence-unit</code> in the persistence.xml file:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>If you use the native query option, you will receive an object array in the message body.</p><p>&#160;</p><h3 id="BookInOnePage-Usingaproducerwithanamedquery">Using a producer with a named query</h3><p>For retrieving selected entities or execute bulk update/delete, you can use the&#160;<code>namedQuery</code>&#160;URI query option. First, you have to define the named query in the JPA Entity class:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[@Entity
+@NamedQuery(name = &quot;step1&quot;, query = &quot;select x from MultiSteps x where x.step = 1&quot;)
+public class MultiSteps {
+   ...
+}
+]]></script>
+</div></div><p>After that you can define a producer uri like this one:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:namedQuery&quot;)
+.to(&quot;jpa://org.apache.camel.examples.MultiSteps?namedQuery=step1&quot;);
+]]></script>
+</div></div><h3 id="BookInOnePage-Usingaproducerwithaquery">Using a producer with a query</h3><p>For retrieving selected entities or execute bulk update/delete, you can use the&#160;<code>query</code>&#160;URI query option. You only have to define the query option:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:query&quot;)
+.to(&quot;jpa://org.apache.camel.examples.MultiSteps?query=select o from org.apache.camel.examples.MultiSteps o where o.step = 1&quot;);
+]]></script>
+</div></div><h3 id="BookInOnePage-Usingaproducerwithanativequery">Using a producer with a native query</h3><p>For retrieving selected entities or execute bulk update/delete, you can use the&#160;<code>nativeQuery</code>&#160;URI query option. You only have to define the native query option:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:nativeQuery&quot;)
+.to(&quot;jpa://org.apache.camel.examples.MultiSteps?resultClass=org.apache.camel.examples.MultiSteps&amp;nativeQuery=select * from MultiSteps where step = 1&quot;);
+]]></script>
+</div></div><p>If you use the native query option without specifying <em>resultClass</em>, you will receive an object array in the message body.</p><p>&#160;</p><h3 id="BookInOnePage-Example.25">Example</h3><p>See <a shape="rect" href="tracer-example.html">Tracer Example</a> for an example using <a shape="rect" href="jpa.html">JPA</a> to store traced messages into a database.</p><h3 id="BookInOnePage-UsingtheJPAbasedidempotentrepository">Using the JPA based idempotent repository</h3><p>In this section we will use the JPA based idempotent repository.</p><p>First we need to setup a <code>persistence-unit</code> in the persistence.xml file:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;persistence-unit name=&quot;idempotentDb&quot; transaction-type=&quot;RESOURCE_LOCAL&quot;&gt;
   &lt;class&gt;org.apache.camel.processor.idempotent.jpa.MessageProcessed&lt;/class&gt;

Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/camel/content/camel-219-release.html
==============================================================================
--- websites/production/camel/content/camel-219-release.html (original)
+++ websites/production/camel/content/camel-219-release.html Tue Mar 14 11:20:07 2017
@@ -91,7 +91,7 @@
 <div style="min-height:200px">&#160;</div>
 
 
-<h2 id="Camel2.19Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.19.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><ul><li>Introduced <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/connectors/camel-connector/src/main/docs/connector-component.adoc#connector-component" rel="nofollow">Camel Connector</a>'s which is a simplified version of a Camel component that has been pre-configured for a specific use-case.</li><li>Upgraded to Spring Boot 1.5.x.</li><li>The <a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a> now provides the <code>camel:validate</code> goal to parse your Java and XML source code for any Camel routes and report invalid Camel endpoint uri and simple expression errors. You can run this at code time (not runtime).&#160;</li><li>Camel&#160;<code>Main</code> and&#160;<a shape="rect" href="spring-boot.html">Spring Boot</a> and&#160;<a shape="r
 ect" href="camel-maven-plugin.html">Camel Maven Plugin</a> can now auto terminate the JVM after Camel has been running for maximum duration of seconds, processed messages or been idle for a period.</li><li>Camel source code can build with Java 9 in preparation for official support for Java 9 later this year</li><li>All the Camel Spring Boot starter components now has more of the components default values included in their metadata which allows tooling to display such information</li><li>Deprecated more components and camel-core APIs that will be dropped in Camel 3.0 or sometime in the future</li><li>Introduced&#160;<code>ReloadStrategy</code>&#160;as SPI which allows custom providers to implement logic for triggering live reloads of Camel routes.</li><li>The&#160;&#160;<a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a>&#160;now allows to live reload route changes from XML files when running Camel. This can also be enabled from the <code>Main</code> class.</li><li>
 Introduced a new&#160;<code>camel-catalog-rest</code>&#160;artifact which is a tiny standalone REST API of the CamelCatalog using JAX-RS and Swagger Annotations.</li><li>Added&#160;<code>camel-catalog-rest-app</code>&#160;as a standalone application which used Apache CXF with Jetty to host the Catalog REST API with embedded Swagger UI</li><li>Returning&#160;<code>null</code>&#160;from&#160;<a shape="rect" href="bean.html">Bean</a> should work similar to how&#160;<code>setBody</code>&#160;and&#160;<code>transform</code>&#160;works when they set a&#160;<code>null</code>&#160;body.</li><li>The Camel Spring Boot starter components now have their auto configuration depends on&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> which makes it easier writing unit tests where you can exclude&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> to turn off Camel Spring Boot auto configuration completely.</li><li>Camel now supports OWASP dependency check maven
  plugin</li><li><a shape="rect" href="nats.html">NATS</a>&#160;component now supports TLS and&#160;explicit flushing (with timeout) of the connection</li><li><a shape="rect" href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/Metrics">Metrics</a>&#160;component now supports Gauge type</li><li><a shape="rect" href="file2.html">File&#160;consumer</a> now supports idempotent-changed and idempotent-rename read lock strategies for clustering.&#160;</li><li>Camel Catalog now supports custom runtime providers that only includes the supported Camel components, languages and data formats running in that container. For example for Karaf or Spring Boot in the camel-catalog-provider-karaf and camel-catalog-provider-springboot.</li><li>The&#160;<a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/bean">bean</a> component will when calling a method that returned an instance of <code>Callable</code>&#160;now call that callable to obtain the chained result. This allows to c
 all Groovy functions/closures etc.</li><li>Failover&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> with inheritErrorHandler=false, now allows Camel's&#160;<a shape="rect" href="error-handler.html">Error Handler</a> to react after the load balancer is exhausted.</li><li><a shape="rect" href="salesforce.html">Salesforce</a> component now supports limits, recent items, approvals and composite API</li><li>Dumping Camel routes as XML now includes custom namespaces which are at xpath expressions etc. Likewise updating Camel routes from XML can now include namespaces which will be associated on xpath expressions.</li><li>Added&#160;<code>RouteIdFactory</code> which can auto assign route ids based on the consumer endpoints to use more sensitible names, instead of route1, route2, etc.</li><li>Add&#160;<code>skip</code> function to&#160;<a shape="rect" href="simple.html">Simple</a> language</li><li>Upgraded to Jetty 9.3 (Jetty 9.2 still supported for Karaf 4.0.x users)</li><
 li><code>RouteBuilder</code> auto-configuration can now be disabled in <a shape="rect" href="cdi.html">Camel CDI</a></li><li><span>Asynchronous support for <a shape="rect" href="cxfrs.html">CXF JAX-RS</a> producers has been added</span></li><li><span>The&#160;<a shape="rect" href="jsonpath.html">JSonPath</a> language now supports Map and List types and POJOs as well. For POJOs you need to have Jackson on the classpath.&#160;</span></li><li><span><a shape="rect" href="data-format.html">Data Format</a> which marshal to JSon or XML now set the content-type header to application/json or application/xml appropriately.<br clear="none"></span></li><li><span>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component can now store offset state offline (stateRepository) to preserve this information and be able to resume from previous offset.</span></li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component has been improved to be easier to configure and use. Notice there is a 
 backwards incompatible change so users need to migrate.</li><li>A topic based idempotent repository that is&#160;<a shape="rect" href="kafka.html">Kafka</a>&#160;based for the&#160;<a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a>&#160;EIP</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component will not automatic type convert the message body to the type specified by the configured serializer (is string by default) when sending to kafka. You can also now configure key and partitionKey in the endpoint uri, instead of having to specify as headers.</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> consumer will now auto commit on stop to ensure the broker has the latest offset commit. The option&#160;<code>autoCommitOnStop</code> can be configured to be sync,async or none.</li><li>Added easy predicate parser to&#160;<a shape="rect" href="jsonpath.html">JSonPath</a>&#160;to more easily define simple predicates without using the more comple
 x jsonpath notation with all the symbols to just say price &lt; 50</li><li>The&#160;<a shape="rect" href="box.html">Box</a> component has been migrated to use the Box v2 Java API as the old v1 API is going to be shutdown from summer 2017</li><li>Examples overview now generate from the source code to ensure its up to date at&#160;<a shape="rect" class="external-link" href="https://github.com/apache/camel/tree/master/examples#examples" rel="nofollow">https://github.com/apache/camel/tree/master/examples#examples</a></li></ul><p>Fixed these issues</p><ul><li>Fixed starting Camel on Oracle JDK 1.8.0_19 or lower, which would throw an&#160;UnsupportedOperationException</li><li>Fixed running <code>mvn camel:run</code>&#160;when using OSGi Blueprint</li><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystrix EIP</a> to also execute fallback if execution was rejected or short-circuited or other reasons from Hystrix.&#160;</li><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystr
 ix EIP</a> race condition when timeout was hit and fallback is executed could let to Camel Exchange having wrong caused exception.</li><li>Fixed adding new routes to running CamelContext and if the new routes would fail to startup, then before these routes would "hang around". Now only succesful started routes are added.</li><li>Adding or removing routes that starts from&#160;<a shape="rect" href="undertow.html">Undertow</a> no longer restart the entire HTTP server</li><li><a shape="rect" href="vm.html">VM</a> endpoint should prepare exchange with the CamelContext from the consumer and not from cached endpoint which can be different</li><li>Fixed a bug when using&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> with&#160;<a shape="rect" href="servlet.html">SERVLET</a> could cause a java.io.IOException: Stream closed exception when using <a shape="rect" href="bean.html">Bean</a>&#160;in the route.&#160;</li><li>Fixed an issue when using&#160;<code>pipeline</code> in Java DSL no
 t setting up the EIP correctly which could lead to runtime route not as intended.</li><li>Fixed&#160;<a shape="rect" href="dropbox.html">Dropbox</a> to use&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to avoid reading entire file into memory so Camel can process big files</li><li>Fixed&#160;<code>toD</code> issue with splitting uris when RAW values had + sign</li><li>Fixed adviceWith may behave differently when using multiple advices in the same order and you would advice on the same nodes.</li><li>Fixed&#160;<a shape="rect" href="camel-zipkin.html">camel-zipkin</a> to be able to startup and work with Camel XML&#160;</li><li>Fixed&#160;<a shape="rect" href="ftp2.html">FTP2</a> readLock=changed not working (when fastFileExists=false) if no sub folder was specified as starting directory.</li><li>Fixed&#160;<a shape="rect" href="simple.html">Simple</a> language when using indexing with a nested function</li><li>Fixed issue with&#160;<code>@Consume</code> not havin
 g&#160;<code>CamelContext</code>&#160;injected and its lifecycle managed by&#160;<code>CamelContext</code></li><li>Fixed Netty double buffer release leak in&#160;<a shape="rect" href="netty4.html">Netty4</a> and&#160;<a shape="rect" href="netty4-http.html">Netty4 HTTP</a></li></ul><h3 id="Camel2.19Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.19Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li>camel-azure - to integrate with Microsoft Azure Cloud services</li><li>camel-bonita -&#160;allow you to communicate with a remote Bonita engine.</li><li>camel-couchbase - The couchbase component allows you to treat CouchBase instances as a producer or consumer of messages.</li><li>camel-drill -&#160;The drill component gives you the ability to querying to Apache Drill Cluster</li><li>camel-elasticsearch5 - to communicate with Elasticsearch Server using 5.x APIs</li><li>camel
 -google-pubsub - allow you communicate with Google Cloud Pub/Sub</li><li>camel-mongodb3 - Evolution of the component based on v3 driver. Camel-Mongodb still exists allowing compatibility with the v2 driver.</li><li>camel-openstack - allow you to communicate with an Openstack infrastructure</li><li>camel-opentracing -&#160;Distributed tracing using OpenTracing</li><li>camel-tika -&#160;integrates with Apache Tika to extract content and metadata from thousands of file types</li><li>camel-sjms2 - JMS 2.0 api compatible component of the&#160;<a shape="rect" href="sjms.html">SJMS</a> component.</li><li>camel-spring-cloud&#160;- integrates with Spring Cloud</li><li>camel-spring-cloud-netflix - integrates with Spring Cloud Netflix</li></ul><h3 id="Camel2.19Release-NewDSL">New DSL</h3><h3 id="Camel2.19Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.19Release-New.2">New <a shape="rect" href="data-format.html">Data Format</a></h3><h3 id="Camel2.19Release-New.3">New <a shape="rect" 
 href="languages.html">Languages</a></h3><h3 id="Camel2.19Release-New.4">New <a shape="rect" href="examples.html">Examples</a></h3><ul><li>camel-example-reload - To demonstrate the live reload routes from XML files when running Camel.</li><li>camel-example-opentracing -&#160;An example showing how to trace incoming and outgoing messages from Camel with OpenTracing</li></ul><h3 id="Camel2.19Release-New.5">New <a shape="rect" href="tutorials.html">Tutorials</a></h3><h2 id="Camel2.19Release-APIbreaking">API breaking</h2><ul><li>The groovy DSL from camel-groovy has been moved into its own camel-groovy-dsl module. The camel-groovy now only contains the Camel Groovy&#160;<a shape="rect" href="language.html">Language</a></li><li>Camel-spring-LDAP now uses java.util.function.BiFunction&lt;L, Q, S&gt; instead of&#160;org.apache.camel.component.springldap.LdapOperationsFunction&lt;Q, S&gt;</li><li>The deprecated APIs from camel-spring-boot has been removed as part of upgrading and supporting S
 pring Boot 1.5.x</li><li>The&#160;<code>getComponentDocumentation</code> method on&#160;<code>CamelContext</code> is deprecated and returns null. The embedded HTML documentation in all the Camel components has been removed as they are not in use/maintained, and the JSon schema is the actual information. Use the camel-catalog for component documentation where you can get all the documentation in both ascii doc and html format.</li><li>camel-mongodb-gridf schema has been renamed from&#160;<strong>gridfs</strong>&#160;to&#160;<strong>mongodb-gridfs</strong>&#160;to avoid confusion.</li><li>The commands-core has the Catalog commands removed</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a>&#160;endpoint option <code>seekToBeginning=true</code>&#160;should be migrated to&#160;<code>seekTo=beginning</code></li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component has been improved to be easier to configure and use. Notice there is a backwards incompatible change so
  users need to migrate. The kafka uri is changed from kafka:brokers to kafka:topic. So you need to specify the topic name in the context-path and the brokers as parameters, eg before <code>kafka:myserver?topic=sometopic</code>&#160;is now&#160;<code>kafka:sometopic?brokers=myserver</code></li></ul><h2 id="Camel2.19Release-KnownIssues">Known Issues</h2><h2 id="Camel2.19Release-Importantchangestoconsiderwhenupgrading">Important changes to consider when upgrading</h2><ul><li>Groovy DSL and Scala DSL is deprecated and planned to be moved to <a shape="rect" class="external-link" href="https://camel-extra.github.io/" rel="nofollow">Camel Extra</a> and not distributed out of the box in the future.</li><li>Camel now uses Karaf 4.x API and therefore not possible to run on older Karaf versions.</li><li><code>camel-blueprint</code>&#160;changed startup behavior to start on Blueprint.CREATED event which would be more `correct` way of startup instead of Blueprint.REGISTERED as before.</li><li>ca
 mel-spring-boot now don't include prototype scoped beans when auto scanning for RouteBuilder instances, which is how camel-spring works. You can turn this back using the&#160;includeNonSingletons option.</li><li>camel-spring-javaconfig removed from Karaf features as it was not really supported in OSGi/Karaf.</li><li>camel spring-boot shell commands have been removed as&#160;spring-boot shell has been deprecated in spring-boot.</li><li>camel-mongodb-gridf schema has been renamed from <strong>gridfs</strong> to <strong>mongodb-gridfs</strong> to avoid confusion.</li><li>camel-box has been migrated to use box v2 api so there may be some migration needed as the old camel-box component was using box v1 api</li><li>The JSon schema from camel-catalog have changed to use boolean, integer and numeric values when applicable instead of using string values for everything.&#160;</li><li>The camel-catalog Karaf commands has been removed</li></ul><h2 id="Camel2.19Release-GettingtheDistributions">G
 etting the Distributions</h2><h3 id="Camel2.19Release-BinaryDistributions">Binary Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip">apache-camel-x.y.x.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip.asc">apache-camel-x.y.x.zip.asc</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/
 Cygwin Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz">apache-camel-x.y.x.tar.gz</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz.asc">apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-information"><p class="title">The above URLs use redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>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 <a shape="rect" class="external-link" href="http://www.mozilla.com/en-US/firefox/" rel="nofollow">FireFox</a></p></div></div><h3 id="Camel2.19Release-SourceDistributions">Source Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Source (zip)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip">apache-camel-x.y.x-src.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apach
 e-camel/x.y.x/apache-camel-x.y.x-src.zip.asc">apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><h3 id="Camel2.19Release-GettingtheBinariesusingMaven2">Getting the Binaries using Maven 2</h3><p>To use this release in your maven project, the proper dependency configuration that you should use in your <a shape="rect" class="external-link" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">Maven POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h2 id="Camel2.19Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.19.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><ul><li>Introduced <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/connectors/camel-connector/src/main/docs/connector-component.adoc#connector-component" rel="nofollow">Camel Connector</a>'s which is a simplified version of a Camel component that has been pre-configured for a specific use-case.</li><li>Upgraded to Spring Boot 1.5.x.</li><li>The <a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a> now provides the <code>camel:validate</code> goal to parse your Java and XML source code for any Camel routes and report invalid Camel endpoint uri and simple expression errors. You can run this at code time (not runtime).&#160;</li><li>Camel&#160;<code>Main</code> and&#160;<a shape="rect" href="spring-boot.html">Spring Boot</a> and&#160;<a shape="r
 ect" href="camel-maven-plugin.html">Camel Maven Plugin</a> can now auto terminate the JVM after Camel has been running for maximum duration of seconds, processed messages or been idle for a period.</li><li>Camel source code can build with Java 9 in preparation for official support for Java 9 later this year</li><li>All the Camel Spring Boot starter components now has more of the components default values included in their metadata which allows tooling to display such information</li><li>Deprecated more components and camel-core APIs that will be dropped in Camel 3.0 or sometime in the future</li><li>Introduced&#160;<code>ReloadStrategy</code>&#160;as SPI which allows custom providers to implement logic for triggering live reloads of Camel routes.</li><li>The&#160;&#160;<a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a>&#160;now allows to live reload route changes from XML files when running Camel. This can also be enabled from the <code>Main</code> class.</li><li>
 Introduced a new&#160;<code>camel-catalog-rest</code>&#160;artifact which is a tiny standalone REST API of the CamelCatalog using JAX-RS and Swagger Annotations.</li><li>Added&#160;<code>camel-catalog-rest-app</code>&#160;as a standalone application which used Apache CXF with Jetty to host the Catalog REST API with embedded Swagger UI</li><li>Returning&#160;<code>null</code>&#160;from&#160;<a shape="rect" href="bean.html">Bean</a> should work similar to how&#160;<code>setBody</code>&#160;and&#160;<code>transform</code>&#160;works when they set a&#160;<code>null</code>&#160;body.</li><li>The Camel Spring Boot starter components now have their auto configuration depends on&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> which makes it easier writing unit tests where you can exclude&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> to turn off Camel Spring Boot auto configuration completely.</li><li>Camel now supports OWASP dependency check maven
  plugin</li><li><a shape="rect" href="nats.html">NATS</a>&#160;component now supports TLS and&#160;explicit flushing (with timeout) of the connection</li><li><a shape="rect" href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/Metrics">Metrics</a>&#160;component now supports Gauge type</li><li><a shape="rect" href="file2.html">File&#160;consumer</a> now supports idempotent-changed and idempotent-rename read lock strategies for clustering.&#160;</li><li>Camel Catalog now supports custom runtime providers that only includes the supported Camel components, languages and data formats running in that container. For example for Karaf or Spring Boot in the camel-catalog-provider-karaf and camel-catalog-provider-springboot.</li><li>The&#160;<a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/bean">bean</a> component will when calling a method that returned an instance of <code>Callable</code>&#160;now call that callable to obtain the chained result. This allows to c
 all Groovy functions/closures etc.</li><li>Failover&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> with inheritErrorHandler=false, now allows Camel's&#160;<a shape="rect" href="error-handler.html">Error Handler</a> to react after the load balancer is exhausted.</li><li><a shape="rect" href="salesforce.html">Salesforce</a> component now supports limits, recent items, approvals and composite API</li><li>Dumping Camel routes as XML now includes custom namespaces which are at xpath expressions etc. Likewise updating Camel routes from XML can now include namespaces which will be associated on xpath expressions.</li><li>Added&#160;<code>RouteIdFactory</code> which can auto assign route ids based on the consumer endpoints to use more sensitible names, instead of route1, route2, etc.</li><li>Add&#160;<code>skip</code> function to&#160;<a shape="rect" href="simple.html">Simple</a> language</li><li>Upgraded to Jetty 9.3 (Jetty 9.2 still supported for Karaf 4.0.x users)</li><
 li><code>RouteBuilder</code> auto-configuration can now be disabled in <a shape="rect" href="cdi.html">Camel CDI</a></li><li><span>Asynchronous support for <a shape="rect" href="cxfrs.html">CXF JAX-RS</a> producers has been added</span></li><li><span>The&#160;<a shape="rect" href="jsonpath.html">JSonPath</a> language now supports Map and List types and POJOs as well. For POJOs you need to have Jackson on the classpath.&#160;</span></li><li><span><a shape="rect" href="data-format.html">Data Format</a> which marshal to JSon or XML now set the content-type header to application/json or application/xml appropriately.<br clear="none"></span></li><li><span>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component can now store offset state offline (stateRepository) to preserve this information and be able to resume from previous offset.</span></li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component has been improved to be easier to configure and use. Notice there is a 
 backwards incompatible change so users need to migrate.</li><li>A topic based idempotent repository that is&#160;<a shape="rect" href="kafka.html">Kafka</a>&#160;based for the&#160;<a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a>&#160;EIP</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component will not automatic type convert the message body to the type specified by the configured serializer (is string by default) when sending to kafka. You can also now configure key and partitionKey in the endpoint uri, instead of having to specify as headers.</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> consumer will now auto commit on stop to ensure the broker has the latest offset commit. The option&#160;<code>autoCommitOnStop</code> can be configured to be sync,async or none.</li><li>Added easy predicate parser to&#160;<a shape="rect" href="jsonpath.html">JSonPath</a>&#160;to more easily define simple predicates without using the more comple
 x jsonpath notation with all the symbols to just say price &lt; 50</li><li>The&#160;<a shape="rect" href="box.html">Box</a> component has been migrated to use the Box v2 Java API as the old v1 API is going to be shutdown from summer 2017</li><li>Examples overview now generate from the source code to ensure its up to date at&#160;<a shape="rect" class="external-link" href="https://github.com/apache/camel/tree/master/examples#examples" rel="nofollow">https://github.com/apache/camel/tree/master/examples#examples</a></li><li>Added query support for <a shape="rect" href="jpa.html">JPA</a> Producer</li></ul><p>Fixed these issues</p><ul><li>Fixed starting Camel on Oracle JDK 1.8.0_19 or lower, which would throw an&#160;UnsupportedOperationException</li><li>Fixed running <code>mvn camel:run</code>&#160;when using OSGi Blueprint</li><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystrix EIP</a> to also execute fallback if execution was rejected or short-circuited or other reasons fro
 m Hystrix.&#160;</li><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystrix EIP</a> race condition when timeout was hit and fallback is executed could let to Camel Exchange having wrong caused exception.</li><li>Fixed adding new routes to running CamelContext and if the new routes would fail to startup, then before these routes would "hang around". Now only succesful started routes are added.</li><li>Adding or removing routes that starts from&#160;<a shape="rect" href="undertow.html">Undertow</a> no longer restart the entire HTTP server</li><li><a shape="rect" href="vm.html">VM</a> endpoint should prepare exchange with the CamelContext from the consumer and not from cached endpoint which can be different</li><li>Fixed a bug when using&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> with&#160;<a shape="rect" href="servlet.html">SERVLET</a> could cause a java.io.IOException: Stream closed exception when using <a shape="rect" href="bean.html">Bean</a>&#160;in the route.&
 #160;</li><li>Fixed an issue when using&#160;<code>pipeline</code> in Java DSL not setting up the EIP correctly which could lead to runtime route not as intended.</li><li>Fixed&#160;<a shape="rect" href="dropbox.html">Dropbox</a> to use&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to avoid reading entire file into memory so Camel can process big files</li><li>Fixed&#160;<code>toD</code> issue with splitting uris when RAW values had + sign</li><li>Fixed adviceWith may behave differently when using multiple advices in the same order and you would advice on the same nodes.</li><li>Fixed&#160;<a shape="rect" href="camel-zipkin.html">camel-zipkin</a> to be able to startup and work with Camel XML&#160;</li><li>Fixed&#160;<a shape="rect" href="ftp2.html">FTP2</a> readLock=changed not working (when fastFileExists=false) if no sub folder was specified as starting directory.</li><li>Fixed&#160;<a shape="rect" href="simple.html">Simple</a> language when using indexing wit
 h a nested function</li><li>Fixed issue with&#160;<code>@Consume</code> not having&#160;<code>CamelContext</code>&#160;injected and its lifecycle managed by&#160;<code>CamelContext</code></li><li>Fixed Netty double buffer release leak in&#160;<a shape="rect" href="netty4.html">Netty4</a> and&#160;<a shape="rect" href="netty4-http.html">Netty4 HTTP</a></li></ul><h3 id="Camel2.19Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.19Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li>camel-azure - to integrate with Microsoft Azure Cloud services</li><li>camel-bonita -&#160;allow you to communicate with a remote Bonita engine.</li><li>camel-couchbase - The couchbase component allows you to treat CouchBase instances as a producer or consumer of messages.</li><li>camel-drill -&#160;The drill component gives you the ability to querying to Apache Drill Cluster</li><li>camel-elast
 icsearch5 - to communicate with Elasticsearch Server using 5.x APIs</li><li>camel-google-pubsub - allow you communicate with Google Cloud Pub/Sub</li><li>camel-mongodb3 - Evolution of the component based on v3 driver. Camel-Mongodb still exists allowing compatibility with the v2 driver.</li><li>camel-openstack - allow you to communicate with an Openstack infrastructure</li><li>camel-opentracing -&#160;Distributed tracing using OpenTracing</li><li>camel-tika -&#160;integrates with Apache Tika to extract content and metadata from thousands of file types</li><li>camel-sjms2 - JMS 2.0 api compatible component of the&#160;<a shape="rect" href="sjms.html">SJMS</a> component.</li><li>camel-spring-cloud&#160;- integrates with Spring Cloud</li><li>camel-spring-cloud-netflix - integrates with Spring Cloud Netflix</li></ul><h3 id="Camel2.19Release-NewDSL">New DSL</h3><h3 id="Camel2.19Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.19Release-New.2">New <a shape="rect" href="data-form
 at.html">Data Format</a></h3><h3 id="Camel2.19Release-New.3">New <a shape="rect" href="languages.html">Languages</a></h3><h3 id="Camel2.19Release-New.4">New <a shape="rect" href="examples.html">Examples</a></h3><ul><li>camel-example-reload - To demonstrate the live reload routes from XML files when running Camel.</li><li>camel-example-opentracing -&#160;An example showing how to trace incoming and outgoing messages from Camel with OpenTracing</li></ul><h3 id="Camel2.19Release-New.5">New <a shape="rect" href="tutorials.html">Tutorials</a></h3><h2 id="Camel2.19Release-APIbreaking">API breaking</h2><ul><li>The groovy DSL from camel-groovy has been moved into its own camel-groovy-dsl module. The camel-groovy now only contains the Camel Groovy&#160;<a shape="rect" href="language.html">Language</a></li><li>Camel-spring-LDAP now uses java.util.function.BiFunction&lt;L, Q, S&gt; instead of&#160;org.apache.camel.component.springldap.LdapOperationsFunction&lt;Q, S&gt;</li><li>The deprecated A
 PIs from camel-spring-boot has been removed as part of upgrading and supporting Spring Boot 1.5.x</li><li>The&#160;<code>getComponentDocumentation</code> method on&#160;<code>CamelContext</code> is deprecated and returns null. The embedded HTML documentation in all the Camel components has been removed as they are not in use/maintained, and the JSon schema is the actual information. Use the camel-catalog for component documentation where you can get all the documentation in both ascii doc and html format.</li><li>camel-mongodb-gridf schema has been renamed from&#160;<strong>gridfs</strong>&#160;to&#160;<strong>mongodb-gridfs</strong>&#160;to avoid confusion.</li><li>The commands-core has the Catalog commands removed</li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a>&#160;endpoint option <code>seekToBeginning=true</code>&#160;should be migrated to&#160;<code>seekTo=beginning</code></li><li>The&#160;<a shape="rect" href="kafka.html">Kafka</a> component has been improved to b
 e easier to configure and use. Notice there is a backwards incompatible change so users need to migrate. The kafka uri is changed from kafka:brokers to kafka:topic. So you need to specify the topic name in the context-path and the brokers as parameters, eg before <code>kafka:myserver?topic=sometopic</code>&#160;is now&#160;<code>kafka:sometopic?brokers=myserver</code></li></ul><h2 id="Camel2.19Release-KnownIssues">Known Issues</h2><h2 id="Camel2.19Release-Importantchangestoconsiderwhenupgrading">Important changes to consider when upgrading</h2><ul><li>Groovy DSL and Scala DSL is deprecated and planned to be moved to <a shape="rect" class="external-link" href="https://camel-extra.github.io/" rel="nofollow">Camel Extra</a> and not distributed out of the box in the future.</li><li>Camel now uses Karaf 4.x API and therefore not possible to run on older Karaf versions.</li><li><code>camel-blueprint</code>&#160;changed startup behavior to start on Blueprint.CREATED event which would be mo
 re `correct` way of startup instead of Blueprint.REGISTERED as before.</li><li>camel-spring-boot now don't include prototype scoped beans when auto scanning for RouteBuilder instances, which is how camel-spring works. You can turn this back using the&#160;includeNonSingletons option.</li><li>camel-spring-javaconfig removed from Karaf features as it was not really supported in OSGi/Karaf.</li><li>camel spring-boot shell commands have been removed as&#160;spring-boot shell has been deprecated in spring-boot.</li><li>camel-mongodb-gridf schema has been renamed from <strong>gridfs</strong> to <strong>mongodb-gridfs</strong> to avoid confusion.</li><li>camel-box has been migrated to use box v2 api so there may be some migration needed as the old camel-box component was using box v1 api</li><li>The JSon schema from camel-catalog have changed to use boolean, integer and numeric values when applicable instead of using string values for everything.&#160;</li><li>The camel-catalog Karaf comma
 nds has been removed</li></ul><h2 id="Camel2.19Release-GettingtheDistributions">Getting the Distributions</h2><h3 id="Camel2.19Release-BinaryDistributions">Binary Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip">apache-camel-x.y.x.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip.asc">apache-camel-x.y.x.zip.asc</a>
 </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz">apache-camel-x.y.x.tar.gz</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz.asc">apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-information"><p class="title">The above URLs use redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues w
 ith 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 <a shape="rect" class="external-link" href="http://www.mozilla.com/en-US/firefox/" rel="nofollow">FireFox</a></p></div></div><h3 id="Camel2.19Release-SourceDistributions">Source Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Source (zip)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip">apache-camel-x.y.x-src.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><
 a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip.asc">apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><h3 id="Camel2.19Release-GettingtheBinariesusingMaven2">Getting the Binaries using Maven 2</h3><p>To use this release in your maven project, the proper dependency configuration that you should use in your <a shape="rect" class="external-link" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">Maven POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-core&lt;/artifactId&gt;