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/01/18 17:22:11 UTC

svn commit: r1005169 - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache jpa.html

Author: buildbot
Date: Wed Jan 18 17:22:10 2017
New Revision: 1005169

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/book-component-appendix.html
    websites/production/camel/content/book-in-one-page.html
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/jpa.html

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Wed Jan 18 17:22:10 2017
@@ -621,8 +621,8 @@ cometds://localhost:8443/service/mychann
  <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">/**/ div.rbtoc1484223540533 {padding: 0px;} div.rbtoc1484223540533 ul {list-style: disc;margin-left: 0px;} div.rbtoc1484223540533 li {margin-left: 0px;padding-left: 0px;} /**/</style>
- </p><div class="toc-macro rbtoc1484223540533"> 
+</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">/**/ div.rbtoc1484760026622 {padding: 0px;} div.rbtoc1484760026622 ul {list-style: disc;margin-left: 0px;} div.rbtoc1484760026622 li {margin-left: 0px;padding-left: 0px;} /**/</style>
+ </p><div class="toc-macro rbtoc1484760026622"> 
   <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-CXFComponent">CXF Component</a> 
     <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-URIformat">URI format</a></li><li><a shape="rect" href="#BookComponentAppendix-Options">Options</a> 
       <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-Thedescriptionsofthedataformats">The descriptions of the dataformats</a> 
@@ -3332,7 +3332,7 @@ cometds://localhost:8443/service/mychann
  <div class="codeContent panelContent pdl"> 
   <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;camel-jpa&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;x.x.x&amp;lt;/version&amp;gt; &amp;lt;!-- use the same version as your Camel core version --&amp;gt; &amp;lt;/dependency&amp;gt; </script> 
  </div>
-</div><h3 id="BookComponentAppendix-Sendingtotheendpoint.2">Sending to the endpoint</h3><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="BookComponentAppendix-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.apac
 he.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><h3 id="BookComponentAppendix-URIformat.33">URI format</h3><div class="code panel pdl" style="border-width: 1px;">
+</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="BookComponentAppendix-Consumingfromtheendpoint.2">Consuming from the endpoint</h3><p>Consuming messages from a JPA consumer endpoint removes (or updates) entity beans in the database. This allow
 s 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/ca
 mel/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="BookComponentAppendix-URIformat.33">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">jpa:entityClassName[?options] </script> 
  </div>
@@ -5321,7 +5321,7 @@ test.endpoint = result2</pre>
  </div>
 </div><h3 id="BookComponentAppendix-SMSlimitations">SMS limitations</h3><p>SMS is neither reliable or secure.&#160; Users who require reliable and secure delivery may want to consider using the XMPP or SIP components instead, combined with a smartphone app supporting the chosen protocol.</p><ul><li>Reliability: although the SMPP standard offers a range of feedback mechanisms to indicate errors, non-delivery and confirmation of delivery it is not uncommon for mobile networks to hide or simulate these responses.&#160; For example, some networks automatically send a delivery confirmation for every message even if the destination number is invalid or not switched on.&#160; Some networks silently drop messages if they think they are spam.&#160; Spam detection rules in the network may be very crude, sometimes more than 100 messages per day from a single sender may be considered spam.</li><li>Security: there is basic encryption for the last hop from the radio tower down to the recipient ha
 ndset.&#160; SMS messages are not encrypted or authenticated in any other part of the network.&#160; Some operators allow staff in retail outlets or call centres to browse through the SMS message histories of their customers.&#160; Message sender identity can be easily forged.&#160; Regulators and even the mobile telephone industry itself has cautioned against the use of SMS in two-factor authentication schemes and other purposes where security is important.</li></ul><p>While the Camel component makes it as easy as possible to send messages to the SMS network, it can not offer an easy solution to these problems.</p><h2 id="BookComponentAppendix-Datacoding,alphabetandinternationalcharactersets">Data coding, alphabet and international character sets</h2><p>Data coding and alphabet can be specified on a per-message basis.&#160; Default values can be specified for the endpoint.&#160; It is important to understand the relationship between these options and the way the component acts when
  more than one value is set.</p><p>Data coding is an 8 bit field in the SMPP wire format.</p><p>Alphabet corresponds to bits 0-3 of the data coding field.&#160; For some types of message, where a message class is used (by setting bit 5 of the data coding field), the lower two bits of the data coding field are not interpreted as alphabet and only bits 2 and 3 impact the alphabet.</p><p>Furthermore, current version of the JSMPP library only seems to support bits 2 and 3, assuming that bits 0 and 1 are used for message class.&#160; This is why the Alphabet class in JSMPP doesn't support the value 3 (binary 0011) which indicates ISO-8859-1.</p><p>Although JSMPP provides a representation of the message class parameter, the Camel component doesn't currently provide a way to set it other than manually setting the corresponding bits in the data coding field.</p><p>When setting the data coding field in the outgoing message, the Camel component considers the following values and uses the firs
 t one it can find:</p><ul><li>the data coding specified in a header</li><li>the alphabet specified in a header</li><li>the data coding specified in the endpoint configuration (URI parameter)</li></ul><p>Older versions of Camel had bugs in support for international character sets.&#160; This feature only worked when a single encoding was used for all messages and was troublesome when users wanted to change it on a per-message basis.&#160; Users who require this to work should ensure their version of Camel includes the fix for&#160;
  </p><div class="aui-message warning jim-inline-block"> 
-  <span class="aui-icon icon-warning"></span>JIRA Issues Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected response received. Status code: 404 
+  <span class="aui-icon icon-warning"></span>JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. 
  </div> .<p>In addition to trying to send the data coding value to the SMSC, the Camel component also tries to analyze the message body, convert it to a Java String (Unicode) and convert that to a byte array in the corresponding alphabet&#160; When deciding which alphabet to use in the byte array, the Camel SMPP component does not consider the data coding value (header or configuration), it only considers the specified alphabet (from either the header or endpoint parameter).</p><p>If some characters in the String can't be represented in the chosen alphabet, they may be replaced by the question mark ( ? ) symbol.&#160; Users of the API may want to consider checking if their message body can be converted to ISO-8859-1 before passing it to the component and if not, setting the alphabet header to request UCS-2 encoding.&#160; If the alphabet and data coding options are not specified at all then the component may try to detect the required encoding and set the data coding for you.</p><p>
 The list of alphabet codes are specified in the SMPP specification v3.4, section 5.2.19.&#160; One notable limitation of the SMPP specification is that there is no alphabet code for explicitly requesting use of the GSM 3.38 (7 bit) character set.&#160; Choosing the value 0 for the alphabet selects the SMSC <em>default</em> alphabet, this usually means GSM 3.38 but it is not guaranteed.&#160; The SMPP gateway Nexmo <a shape="rect" class="external-link" href="https://help.nexmo.com/hc/en-us/articles/204015813-How-to-change-the-character-encoding-in-SMPP-" rel="nofollow">actually allows the default to be mapped to any other character set with a control panel option</a>. It is suggested that users check with their SMSC operator to confirm exactly which character set is being used as the default.</p><h3 id="BookComponentAppendix-Messagesplittingandthrottling">Message splitting and throttling</h3><p>After transforming a message body from a String to a byte array, the Camel component is al
 so responsible for splitting the message into parts (within the 140 byte SMS size limit) before passing it to JSMPP.&#160; This is completed automatically.</p><p>If the GSM 3.38 alphabet is used, the component will pack up to 160 characters into the 140 byte message body.&#160; If an 8 bit character set is used (e.g. ISO-8859-1 for western Europe) then 140 characters will be allowed within the 140 byte message body.&#160; If 16 bit UCS-2 encoding is used then just 70 characters fit into each 140 byte message.</p><p>Some SMSC providers implement throttling rules.&#160; Each part of a message that has been split may be counted separately by the provider's throttling mechanism.&#160; The Camel Throttler component can be useful for throttling messages in the SMPP route before handing them to the SMSC.</p><h3 id="BookComponentAppendix-URIformat.59">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">smpp://[username@]hostname[:port][?options] smpps://[username@]hostname[:port][?options] </script> 

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 Wed Jan 18 17:22:10 2017
@@ -3940,11 +3940,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.rbtoc1484223588784 {padding: 0px;}
-div.rbtoc1484223588784 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1484223588784 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1484760038950 {padding: 0px;}
+div.rbtoc1484760038950 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1484760038950 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1484223588784">
+/*]]>*/</style></p><div class="toc-macro rbtoc1484760038950">
 <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>
@@ -6059,11 +6059,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.rbtoc1484223589479 {padding: 0px;}
-div.rbtoc1484223589479 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1484223589479 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1484760039237 {padding: 0px;}
+div.rbtoc1484760039237 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1484760039237 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1484223589479">
+/*]]>*/</style><div class="toc-macro rbtoc1484760039237">
 <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>
@@ -14244,8 +14244,8 @@ cometds://localhost:8443/service/mychann
  <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">/**/ div.rbtoc1484223615213 {padding: 0px;} div.rbtoc1484223615213 ul {list-style: disc;margin-left: 0px;} div.rbtoc1484223615213 li {margin-left: 0px;padding-left: 0px;} /**/</style>
- </p><div class="toc-macro rbtoc1484223615213"> 
+</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">/**/ div.rbtoc1484760041172 {padding: 0px;} div.rbtoc1484760041172 ul {list-style: disc;margin-left: 0px;} div.rbtoc1484760041172 li {margin-left: 0px;padding-left: 0px;} /**/</style>
+ </p><div class="toc-macro rbtoc1484760041172"> 
   <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> 
@@ -16955,7 +16955,7 @@ cometds://localhost:8443/service/mychann
  <div class="codeContent panelContent pdl"> 
   <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;camel-jpa&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;x.x.x&amp;lt;/version&amp;gt; &amp;lt;!-- use the same version as your Camel core version --&amp;gt; &amp;lt;/dependency&amp;gt; </script> 
  </div>
-</div><h3 id="BookInOnePage-Sendingtotheendpoint.2">Sending to the endpoint</h3><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) enti
 ty 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/cur
 rent/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><h3 id="BookInOnePage-URIformat.34">URI format</h3><div class="code panel pdl" style="border-width: 1px;">
+</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/camel/comp
 onent/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"> 
   <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter">jpa:entityClassName[?options] </script> 
  </div>
@@ -18944,7 +18944,7 @@ test.endpoint = result2</pre>
  </div>
 </div><h3 id="BookInOnePage-SMSlimitations">SMS limitations</h3><p>SMS is neither reliable or secure.&#160; Users who require reliable and secure delivery may want to consider using the XMPP or SIP components instead, combined with a smartphone app supporting the chosen protocol.</p><ul><li>Reliability: although the SMPP standard offers a range of feedback mechanisms to indicate errors, non-delivery and confirmation of delivery it is not uncommon for mobile networks to hide or simulate these responses.&#160; For example, some networks automatically send a delivery confirmation for every message even if the destination number is invalid or not switched on.&#160; Some networks silently drop messages if they think they are spam.&#160; Spam detection rules in the network may be very crude, sometimes more than 100 messages per day from a single sender may be considered spam.</li><li>Security: there is basic encryption for the last hop from the radio tower down to the recipient handset.&#
 160; SMS messages are not encrypted or authenticated in any other part of the network.&#160; Some operators allow staff in retail outlets or call centres to browse through the SMS message histories of their customers.&#160; Message sender identity can be easily forged.&#160; Regulators and even the mobile telephone industry itself has cautioned against the use of SMS in two-factor authentication schemes and other purposes where security is important.</li></ul><p>While the Camel component makes it as easy as possible to send messages to the SMS network, it can not offer an easy solution to these problems.</p><h2 id="BookInOnePage-Datacoding,alphabetandinternationalcharactersets">Data coding, alphabet and international character sets</h2><p>Data coding and alphabet can be specified on a per-message basis.&#160; Default values can be specified for the endpoint.&#160; It is important to understand the relationship between these options and the way the component acts when more than one v
 alue is set.</p><p>Data coding is an 8 bit field in the SMPP wire format.</p><p>Alphabet corresponds to bits 0-3 of the data coding field.&#160; For some types of message, where a message class is used (by setting bit 5 of the data coding field), the lower two bits of the data coding field are not interpreted as alphabet and only bits 2 and 3 impact the alphabet.</p><p>Furthermore, current version of the JSMPP library only seems to support bits 2 and 3, assuming that bits 0 and 1 are used for message class.&#160; This is why the Alphabet class in JSMPP doesn't support the value 3 (binary 0011) which indicates ISO-8859-1.</p><p>Although JSMPP provides a representation of the message class parameter, the Camel component doesn't currently provide a way to set it other than manually setting the corresponding bits in the data coding field.</p><p>When setting the data coding field in the outgoing message, the Camel component considers the following values and uses the first one it can fin
 d:</p><ul><li>the data coding specified in a header</li><li>the alphabet specified in a header</li><li>the data coding specified in the endpoint configuration (URI parameter)</li></ul><p>Older versions of Camel had bugs in support for international character sets.&#160; This feature only worked when a single encoding was used for all messages and was troublesome when users wanted to change it on a per-message basis.&#160; Users who require this to work should ensure their version of Camel includes the fix for&#160;
  </p><div class="aui-message warning jim-inline-block"> 
-  <span class="aui-icon icon-warning"></span>JIRA Issues Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected response received. Status code: 404 
+  <span class="aui-icon icon-warning"></span>JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. 
  </div> .<p>In addition to trying to send the data coding value to the SMSC, the Camel component also tries to analyze the message body, convert it to a Java String (Unicode) and convert that to a byte array in the corresponding alphabet&#160; When deciding which alphabet to use in the byte array, the Camel SMPP component does not consider the data coding value (header or configuration), it only considers the specified alphabet (from either the header or endpoint parameter).</p><p>If some characters in the String can't be represented in the chosen alphabet, they may be replaced by the question mark ( ? ) symbol.&#160; Users of the API may want to consider checking if their message body can be converted to ISO-8859-1 before passing it to the component and if not, setting the alphabet header to request UCS-2 encoding.&#160; If the alphabet and data coding options are not specified at all then the component may try to detect the required encoding and set the data coding for you.</p><p>
 The list of alphabet codes are specified in the SMPP specification v3.4, section 5.2.19.&#160; One notable limitation of the SMPP specification is that there is no alphabet code for explicitly requesting use of the GSM 3.38 (7 bit) character set.&#160; Choosing the value 0 for the alphabet selects the SMSC <em>default</em> alphabet, this usually means GSM 3.38 but it is not guaranteed.&#160; The SMPP gateway Nexmo <a shape="rect" class="external-link" href="https://help.nexmo.com/hc/en-us/articles/204015813-How-to-change-the-character-encoding-in-SMPP-" rel="nofollow">actually allows the default to be mapped to any other character set with a control panel option</a>. It is suggested that users check with their SMSC operator to confirm exactly which character set is being used as the default.</p><h3 id="BookInOnePage-Messagesplittingandthrottling">Message splitting and throttling</h3><p>After transforming a message body from a String to a byte array, the Camel component is also respo
 nsible for splitting the message into parts (within the 140 byte SMS size limit) before passing it to JSMPP.&#160; This is completed automatically.</p><p>If the GSM 3.38 alphabet is used, the component will pack up to 160 characters into the 140 byte message body.&#160; If an 8 bit character set is used (e.g. ISO-8859-1 for western Europe) then 140 characters will be allowed within the 140 byte message body.&#160; If 16 bit UCS-2 encoding is used then just 70 characters fit into each 140 byte message.</p><p>Some SMSC providers implement throttling rules.&#160; Each part of a message that has been split may be counted separately by the provider's throttling mechanism.&#160; The Camel Throttler component can be useful for throttling messages in the SMPP route before handing them to the SMSC.</p><h3 id="BookInOnePage-URIformat.60">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">smpp://[username@]hostname[:port][?options] smpps://[username@]hostname[:port][?options] </script> 

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

Modified: websites/production/camel/content/jpa.html
==============================================================================
--- websites/production/camel/content/jpa.html (original)
+++ websites/production/camel/content/jpa.html Wed Jan 18 17:22:10 2017
@@ -94,7 +94,7 @@
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="JPA-Sendingtotheendpoint">Sending to the endpoint</h3><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="JPA-Consumingfromtheendpoint">Consuming from the endpoint</h3><p>Consuming messages from a JPA consumer endpoint removes (or updates) entity beans in the da
 tabase. 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/api
 docs/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><h3 id="JPA-URIformat">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><h3 id="JPA-Consumingfromtheendpoint">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/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><h3 id="JPA-URIformat">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="JPA-Options">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</em> from the U
 RI.</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 exclusive lock on e
 ach 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">Query</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 mi
 lliseconds 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>maxMe
 ssagesPerPoll</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="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" cl
 ass="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="confluenceTd"><p><st
 rong>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" cla
 ss="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="JPA-MessageHeaders">Message Headers</h3><p>Camel adds the following message headers to the exchange:</p><div class="confluenceTableSmall"><div class="table-wrap">