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">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-jpa&lt;/artifactId&gt;
&lt;version&gt;x.x.x&lt;/version&gt; &lt;!-- use the same
version as your Camel core version --&gt; &lt;/dependency&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.  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.  For example, some networks automatically send a delivery
confirmation for every message even if the destination number is invalid or not
switched on.  Some networks silently drop messages if they think they are
spam.  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.  SMS messages are not encrypted or authenticated in any other part
of the network.  Some operators allow staff in retail outlets or call
centres to browse through the SMS message histories of their customers. 
Message sender identity can be easily forged.  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.  Default values can be
specified for the endpoint.  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.  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.  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. 
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. 
Users who require this to work should ensure their version of Camel includes
the fix for 
</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  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.  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.  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.  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.  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.  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.  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.  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.  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.  Each part
of a message that has been split may be counted separately by the provider's
throttling mechanism.  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> </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">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-jpa&lt;/artifactId&gt;
&lt;version&gt;x.x.x&lt;/version&gt; &lt;!-- use the same
version as your Camel core version --&gt; &lt;/dependency&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.  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.  For example, some networks automatically send a delivery
confirmation for every message even if the destination number is invalid or not
switched on.  Some networks silently drop messages if they think they are
spam.  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.  Some operators allow staff in retail outlets or call centres to
browse through the SMS message histories of their customers.  Message
sender identity can be easily forged.  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.  Default values can be
specified for the endpoint.  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. 
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.  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.  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.  Users who require this to work
should ensure their version of Camel includes the fix for 
</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  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.  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.  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.  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.  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.  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.  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.  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.  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.  Each part
of a message that has been split may be counted separately by the provider's
throttling mechanism.  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 @@
<!-- use the same version as your Camel core version -->
</dependency>
]]></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&option=value&...</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> </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> </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> </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> </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<String, Object></
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> </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> 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">