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 Thu Nov 29
08:26:57 2018
@@ -90,7 +90,7 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><div class="chapter conf-macro
output-block" id="chapter-component-appendix" data-hasbody="true"
data-macro-name="div"><h1
id="BookComponentAppendix-ComponentAppendix">Component Appendix</h1><p>There
now follows the documentation on each Camel component.</p><h2
id="BookComponentAppendix-ActiveMQComponent">ActiveMQ Component</h2><p>The
ActiveMQ component allows messages to be sent to a <a shape="rect"
class="external-link" href="http://java.sun.com/products/jms/"
rel="nofollow">JMS</a> Queue or Topic or messages to be consumed from a JMS
Queue or Topic using <a shape="rect" class="external-link"
href="http://activemq.apache.org/" title="The most popular and powerful open
source message broker">Apache ActiveMQ</a>. This component is based on <a
shape="rect" href="jms.html">JMS Component</a> and uses Spring's JMS support
for declarative transactions, using Spring's
<strong><code>JmsTemplate</code></strong> for sending and a
<strong><code>MessageLis
tenerContainer</code></strong> for consuming. All the options from the <a
shape="rect" href="jms.html">JMS</a> component also applies for this
component.</p><p>To use this component make sure you have the
<strong><code>activemq.jar</code></strong> or
<strong><code>activemq-core.jar</code></strong> on your classpath along with
any Camel dependencies such as <strong><code>camel-core.jar</code></strong>,
<strong><code>camel-spring.jar</code></strong> and
<strong><code>camel-jms.jar</code></strong>.</p><parameter
ac:name="title">Transacted and caching</parameter><rich-text-body><p>See
section <em>Transactions and Cache Levels</em> below on <a shape="rect"
href="jms.html">JMS</a> page if you are using transactions with <a shape="rect"
href="jms.html">JMS</a> as it can impact performance.</p></rich-text-body><h3
id="BookComponentAppendix-URIformat">URI
format</h3><plain-text-body>activemq:[queue:|topic:]destinationName
+<div class="wiki-content maincontent"><div class="chapter conf-macro
output-block" id="chapter-component-appendix" data-hasbody="true"
data-macro-name="div"><h1
id="BookComponentAppendix-ComponentAppendix">Component Appendix</h1><p>There
now follows the documentation on each Camel component.</p><div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2
id="BookComponentAppendix-ActiveMQComponent">ActiveMQ Component</h2><p>The
ActiveMQ component allows messages to be sent to a <a shape="rect"
class="external-link" href="http://java.sun.com/products/jms/"
rel="nofollow">JMS</a> Queue or Topic or messages to be consumed from a JMS
Queue or Topic using <a shape="rect" class="external-link"
href="http://activemq.apache.org/" title="The most popular and powerful open
source message broker">Apache ActiveMQ</a>. This component is based on <a
shape="rect" href="jms.html">JMS Component</a> and uses Spring's JMS support
for declarative transactions, using Spring's
<strong><code>JmsTemplate</code></strong> for sending and a
<strong><code>MessageListenerContainer</code></strong> for consuming. All the
options from the <a shape="rect" href="jms.html">JMS</a> component also applies
for this component.</p><p>To use this component make sure you have the
<strong><code>activemq.jar</code></strong> or
<strong><code>activemq-core.jar</code></strong> on your classpath along with
any Camel dependencies such as <strong><code>camel-core.jar</code></strong>,
<strong><code>camel-spring.jar</code></strong> and
<strong><code>camel-jms.jar</code></strong>.</p><parameter
ac:name="title">Transacted and caching</parameter><rich-text-body><p>See
section <em>Transactions and Cache Levels</em> below on <a shape="rect"
href="jms.html">JMS</a> page if you are using transactions with <a shape="rect"
href="jms.html">JMS</a> as it can impact performance.</p></rich-text-body><h3
id="BookComponentAppendix-URIformat">URI
format</h3><plain-text-body>activemq:[queue:|topic:]de
stinationName
</plain-text-body><p>Where <strong><code>destinationName</code></strong>
is an ActiveMQ queue or topic name. By default,
the <strong><code>destinationName</code></strong> is interpreted as a
queue name. For example, to connect to the queue,
<strong><code>FOO.BAR</code></strong>, use:</p><plain-text-body>activemq:FOO.BAR
</plain-text-body><p>You can include the optional
<strong><code>queue:</code></strong> prefix, if you
prefer:</p><plain-text-body>activemq:queue:FOO.BAR
</plain-text-body><p>To connect to a topic, you must include the
<strong><code>topic:</code></strong> prefix. For example, to connect to the
topic, <strong><code>Stocks.Prices</code></strong>,
use:</p><plain-text-body>activemq:topic:Stocks.Prices
@@ -203,7 +203,7 @@ droppable = false
<artifactId>activemq-camel</artifactId>
<version>5.6.0</version>
</dependency>
-</plain-text-body><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p> <div
class="error"><span class="error">Unable to render {include}</span> The
included page could not be found.</div> <h2
id="BookComponentAppendix-AMQP">AMQP</h2><p>The <strong style="line-height:
1.42857;">amqp:</strong> component supports the <a shape="rect"
class="external-link" href="http://www.amqp.org/" rel="nofollow"
style="line-height: 1.42857;">AMQP 1.0 protocol</a> using the JMS Client API of
the <a shape="rect" class="external-link"
href="https://github.com/apache/qpid-jms/" rel="nofollow">Qpid</a> project. In
case you want to use <strong>AMQP 0.9</strong> (in particular RabbitMQ) you
might also be interested in the <a shape="rect" href="rabbitmq.html">Camel
RabbitMQ</a> component. Please keep in mind that prior to the <strong>Camel
2.17.0</strong> AMQP component supported <strong>AMQP 0.9</strong> and above,
however since <strong>Camel 2.17.0</st
rong> it supports only <strong>AMQP 1.0</strong>.</p><p>Maven users will need
to add the following dependency to their <strong><code>pom.xml</code></strong>
for this component:</p><div class="code panel pdl conf-macro output-block"
data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+</plain-text-body><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p></div> <div
class="error conf-macro output-block" data-hasbody="false"
data-macro-name="include"><span class="error">Unable to render {include}</span>
The included page could not be found.</div> <div class="conf-macro
output-block" data-hasbody="false" data-macro-name="include"><h2
id="BookComponentAppendix-AMQP">AMQP</h2><p>The <strong style="line-height:
1.42857;">amqp:</strong> component supports the <a shape="rect"
class="external-link" href="http://www.amqp.org/" rel="nofollow"
style="line-height: 1.42857;">AMQP 1.0 protocol</a> using the JMS Client API of
the <a shape="rect" class="external-link"
href="https://github.com/apache/qpid-jms/" rel="nofollow">Qpid</a> project. In
case you want to use <strong>AMQP 0.9</strong> (in particular RabbitMQ) you
might also be interested in the <a shape="rect" href="rabbitmq.html">Camel
RabbitMQ</a> component. Please
keep in mind that prior to the <strong>Camel 2.17.0</strong> AMQP component
supported <strong>AMQP 0.9</strong> and above, however since <strong>Camel
2.17.0</strong> it supports only <strong>AMQP 1.0</strong>.</p><p>Maven users
will need to add the following dependency to their
<strong><code>pom.xml</code></strong> for this component:</p><div class="code
panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-amqp</artifactId>
@@ -284,8 +284,8 @@ AMQPConnectionDetails amqpConnection() {
</div></div><h3 id="BookComponentAppendix-UsingamqpinsideKaraf">Using amqp
inside Karaf</h3><p>To use the <strong><code>amqp</code></strong> component
inside Karaf use the predefined feature called
<strong><code>camel-amqp</code></strong> to install the necessary
bundles.</p><p>Example:</p><div class="code panel pdl conf-macro output-block"
data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: text;
gutter: false; theme: Default" data-theme="Default">karaf@root()> repo-add
camel
karaf@root()> feature:install camel-amqp</pre>
-</div></div><p>and the environment would be set.</p><p>Use the
<strong><code>camel-blueprint</code></strong>
or <strong><code>camel-spring</code></strong> features to define routes in
those contexts.</p><p> </p><p> </p><h3
id="BookComponentAppendix-SeeAlso">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul><p> </p><p> </p>
<h2 id="BookComponentAppendix-SQSComponent">SQS
Component</h2><p><strong>Available as of Camel 2.6</strong></p><p>The sqs
component supports sending and receiving messages to <a shape="rect"
class="external-link" href="http://aws.amazon.com/sqs" rel="nofollow">Amazon's
SQS</a> service.</p><div class="confluence-information-macro
confluence-information-macro-information conf-macro output-block"
data-hasbody="true" data-macro-name="info"><p
class="title">Prerequisites</p><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"> </span><div
class="confluence-information-macro-body"><p>You must have a valid Amazon Web
Services developer account, and be signed up
to use Amazon SQS. More information are available at <a shape="rect"
class="external-link" href="http://aws.amazon.com/sqs" rel="nofollow">Amazon
SQS</a>.</p></div></div><h3 id="BookComponentAppendix-URIFormat">URI
Format</h3><div class="code panel pdl conf-macro output-block"
data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+</div></div><p>and the environment would be set.</p><p>Use the
<strong><code>camel-blueprint</code></strong>
or <strong><code>camel-spring</code></strong> features to define routes in
those contexts.</p><p> </p><p> </p><div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h3
id="BookComponentAppendix-SeeAlso">See Also</h3>
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul></div><p>
</p><p> </p></div> <div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h2
id="BookComponentAppendix-SQSComponent">SQS Component</h2><p><strong>Available
as of Camel 2.6</strong></p><p>The sqs component supports sending and receiving
messages to <a shape="rect" class="external-link"
href="http://aws.amazon.com/sqs" rel="nofollow">Amazon's SQS</a>
service.</p><div class="confluence-information-macro
confluence-information-macro-information conf-macro output-block"
data-hasbody="true" data-macro-name="info"><p
class="title">Prerequisites</p><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"> </span><div
class="confluence-informati
on-macro-body"><p>You must have a valid Amazon Web Services developer account,
and be signed up to use Amazon SQS. More information are available at <a
shape="rect" class="external-link" href="http://aws.amazon.com/sqs"
rel="nofollow">Amazon SQS</a>.</p></div></div><h3
id="BookComponentAppendix-URIFormat">URI Format</h3><div class="code panel pdl
conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default"
data-theme="Default">aws-sqs://queueName[?options]
aws-sqs://queueNameOrArn[?options] (from Camel 2.18)
</pre>
@@ -316,8 +316,8 @@ registry.bind("client", client);
.filter("${header.login} == true")
.to("mock:result");
</pre>
-</div></div><p>In the above code, if an exchange doesn't have an appropriate
header, it will not make it through the filter AND also not be deleted from the
SQS queue. After <code>5000</code> miliseconds, the message will become
visible to other consumers.</p><p> </p><h3
id="BookComponentAppendix-SeeAlso.1">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul><p> </p><ul
class="alternate"><li><a shape="rect" href="aws.html">AWS
Component</a></li></ul> <h2 id="BookComponentAppendix-AtomComponent">Atom
Component</h2><p>The <strong>atom:</strong> component is used for polling Atom
feeds.</p><p>Camel will poll the feed every 60 seconds by default.<br
clear="none"> <strong>Note:</strong> The component currently only supports
polling (consuming) feeds.</p><p>Maven users will need to add the following
dependency to their <code>pom.xml</code> for this component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
+</div></div><p>In the above code, if an exchange doesn't have an appropriate
header, it will not make it through the filter AND also not be deleted from the
SQS queue. After <code>5000</code> miliseconds, the message will become
visible to other consumers.</p><p> </p><div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h3
id="BookComponentAppendix-SeeAlso.1">See Also</h3>
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul></div><p> </p><ul
class="alternate"><li><a shape="rect" href="aws.html">AWS
Component</a></li></ul></div> <div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h2
id="BookComponentAppendix-AtomComponent">Atom Component</h2><p>The
<strong>atom:</strong> component is used for polling Atom feeds.</p><p>Camel
will poll the feed every 60 seconds by default.<br clear="none">
<strong>Note:</strong> The component currently only supports polling
(consuming) feeds.</p><p>Maven users will need to add the following dependency
to their <code>pom.xml</code> for this component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atom</artifactId>
<version>x.x.x</version>
@@ -325,7 +325,7 @@ registry.bind("client", client);
</dependency>
</plain-text-body><h3 id="BookComponentAppendix-URIformat.2">URI
format</h3><plain-text-body>atom://atomUri[?options]
</plain-text-body><p>Where <strong>atomUri</strong> is the URI to the Atom
feed to poll.</p><h3
id="BookComponentAppendix-Options.1">Options</h3><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Property</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>splitEntries</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>If <code>true</code> Camel will
poll the feed and for the subsequent polls return each entry poll by poll. If
the feed contains 7 entries then Camel will return the first entry on the first
poll, the 2nd entry on the next poll, until no more entries where as Camel will
do a ne
w update on the feed. If <code>false</code> then Camel will poll a fresh feed
on every invocation.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>filter</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Is only used by the split entries to filter the entries
to return. Camel will default use the <code>UpdateDateFilter</code> that only
return new entries from the feed. So the client consuming from the feed never
receives the same entry more than once. The filter will return the entries
ordered by the newest last.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>lastUpdate</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Is only used by the filter, as the starting
timestamp for selection never entries (uses the <code>entry.updated</code>
timest
amp). Syntax format is: <code>yyyy-MM-ddTHH:MM:ss</code>. Example:
<code>2007-12-24T17:45:59</code>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>throttleEntries</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>Camel 2.5:</strong> Sets whether
all entries identified in a single feed poll should be delivered immediately.
If <code>true</code>, only one entry is processed per
<code>consumer.delay</code>. Only applicable when <code>splitEntries</code> is
set to <code>true</code>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>feedHeader</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Sets whether to add the Abdera Feed object
as a header.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>sortEntries</code></
p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>If <code>splitEntries</code> is <code>true</code>, this
sets whether to sort those entries by updated date.</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>Delay in millis 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>Millis before polling
starts.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>consumer.userFixedDelay</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td
colspan="1" r
owspan="1" class="confluenceTd"><p>If <code>true</code>, use fixed delay
between pools, 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"><code>username</code></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.16:</strong> For basic authentication when
polling from a HTTP feed</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><code>password</code></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.16:</strong><span> For basic
authentication when polling from a HTTP
feed</span></td></tr></tbody></table></div></rich-text-body><p>You can append
query options to the URI in th
e following format, <code>?option=value&option=value&...</code></p><h3
id="BookComponentAppendix-Exchangedataformat">Exchange data format</h3><p>Camel
will set the In body on the returned <code>Exchange</code> with the entries.
Depending on the <code>splitEntries</code> flag Camel will either return one
<code>Entry</code> or a <code>List<Entry></code>.</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Value</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Behavior</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>splitEntries</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Only a single entry from the currently
being processed fe
ed is set: <code>exchange.in.body(Entry)</code></p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>splitEntries</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The entire list of entries from the feed is
set:
<code>exchange.in.body(List<Entry>)</code></p></td></tr></tbody></table></div></rich-text-body><p>Camel
can set the <code>Feed</code> object on the In header (see
<code>feedHeader</code> option to disable this):</p><h3
id="BookComponentAppendix-MessageHeaders">Message Headers</h3><p>Camel atom
uses these headers.</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><
code>CamelAtomFeed</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>When consuming the
<code>org.apache.abdera.model.Feed</code> object is set to this
header.</p></td></tr></tbody></table></div></rich-text-body><h3
id="BookComponentAppendix-Samples">Samples</h3><p>In this sample we poll James
Strachan's
blog.</p><plain-text-body>from("atom://http://macstrac.blogspot.com/feeds/posts/default").to("seda:feeds");
-</plain-text-body><p>In this sample we want to filter only good blogs we like
to a SEDA queue. The sample also shows how to setup Camel standalone, not
running in any Container or using
Spring.<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/components/camel-atom/src/test/java/org/apache/camel/component/atom/AtomGoodBlogsTest.java}</plain-text-body><parameter
ac:name=""><a shape="rect" href="endpoint-see-also.html">Endpoint See
Also</a></parameter></p><ul class="alternate"><li><a shape="rect"
href="rss.html">RSS</a></li></ul> <h2
id="BookComponentAppendix-BeanComponent">Bean Component</h2><p>The
<strong>bean:</strong> component binds beans to Camel message exchanges.</p><h3
id="BookComponentAppendix-URIformat.3">URI
format</h3><p>bean:beanID[?options]</p><p>Where <strong>beanID</strong> can be
any string which is used to look up the bean in the <a shape="rect"
href="registry.html">Registry</a></p><h3
id="BookComponentAppendix-Options.2">Options</h3><p>confluenceTableSmall</
p><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>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>method</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The method name from the bean that will be
invoked. If not provided, Camel will try to determine the method itself. In
case of ambiguity an exception will be thrown. See <a shape="rect"
href="bean-binding.html">Bean Binding</a> for more details. From <strong>Camel
2.8</strong> onwards you can specify type qualifiers to pin-point the exact
method to use for o
verloaded methods. From <strong>Camel 2.9</strong> onwards you can specify
parameter values directly in the method syntax. See more details at <a
shape="rect" href="bean-binding.html">Bean Binding</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>cache</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>If enabled, Camel will cache the result of
the first <a shape="rect" href="registry.html">Registry</a> look-up. Cache can
be enabled if the bean in the <a shape="rect" href="registry.html">Registry</a>
is defined as a singleton scope.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>multiParameterArray</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>fal
se</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>How to
treat the parameters which are passed from the message body; if it is
<code>true</code>, the In message body should be an array of
parameters.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>bean.xxx</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong style="line-height: 1.42857;">Camel
2.17:</strong> To configure additional options on the create bean instance
from the class name. For example to configure a foo option on the bean, use
bean.foo=123.</p></td></tr></tbody></table></div><p>You can append query
options to the URI in the following format,
<code>?option=value&option=value&...</code></p><h3
id="BookComponentAppendix-Using">Using</h3><p>The object instance that is used
to consume messages must be explicitly registered with the
<a shape="rect" href="registry.html">Registry</a>. For example, if you are
using Spring you must define the bean in the Spring configuration,
<code>spring.xml</code>; or if you don't use Spring, by registering the bean in
JNDI.</p><div class="code panel pdl conf-macro output-block"
data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+</plain-text-body><p>In this sample we want to filter only good blogs we like
to a SEDA queue. The sample also shows how to setup Camel standalone, not
running in any Container or using
Spring.<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/components/camel-atom/src/test/java/org/apache/camel/component/atom/AtomGoodBlogsTest.java}</plain-text-body><parameter
ac:name=""><a shape="rect" href="endpoint-see-also.html">Endpoint See
Also</a></parameter></p><ul class="alternate"><li><a shape="rect"
href="rss.html">RSS</a></li></ul></div> <div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h2
id="BookComponentAppendix-BeanComponent">Bean Component</h2><p>The
<strong>bean:</strong> component binds beans to Camel message exchanges.</p><h3
id="BookComponentAppendix-URIformat.3">URI
format</h3><p>bean:beanID[?options]</p><p>Where <strong>beanID</strong> can be
any string which is used to look up the bean in the <a shape="rect"
href="registry.html">Regi
stry</a></p><h3
id="BookComponentAppendix-Options.2">Options</h3><p>confluenceTableSmall</p><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>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>method</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The method name from the bean that will be
invoked. If not provided, Camel will try to determine the method itself. In
case of ambiguity an exception will be thrown. See <a shape="rect"
href="bean-binding.html">Bean Binding</a> for more details. From <strong>Camel
2.8</
strong> onwards you can specify type qualifiers to pin-point the exact method
to use for overloaded methods. From <strong>Camel 2.9</strong> onwards you can
specify parameter values directly in the method syntax. See more details at <a
shape="rect" href="bean-binding.html">Bean Binding</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>cache</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>If enabled, Camel will cache the result of
the first <a shape="rect" href="registry.html">Registry</a> look-up. Cache can
be enabled if the bean in the <a shape="rect" href="registry.html">Registry</a>
is defined as a singleton scope.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>multiParameterArray</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>
<code>boolean</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How to treat the parameters which are passed from the
message body; if it is <code>true</code>, the In message body should be an
array of parameters.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>bean.xxx</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong style="line-height: 1.42857;">Camel
2.17:</strong> To configure additional options on the create bean instance
from the class name. For example to configure a foo option on the bean, use
bean.foo=123.</p></td></tr></tbody></table></div><p>You can append query
options to the URI in the following format,
<code>?option=value&option=value&...</code></p><h3
id="BookComponentAppendix-Using">Using</h3><p>Th
e object instance that is used to consume messages must be explicitly
registered with the <a shape="rect" href="registry.html">Registry</a>. For
example, if you are using Spring you must define the bean in the Spring
configuration, <code>spring.xml</code>; or if you don't use Spring, by
registering the bean in JNDI.</p><div class="code panel pdl conf-macro
output-block" data-hasbody="true" data-macro-name="code" style="border-width:
1px;"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default" data-theme="Default">// lets populate the
context with the services we need
// note that we could just use a spring.xml file to avoid this step
JndiContext context = new JndiContext();
@@ -379,7 +379,7 @@ from("direct:start").bean(new ExampleBea
from("direct:start").bean(new ExampleBean(), "methodName");
// Camel will create the instance of bean and cache it for you.
from("direct:start").bean(ExampleBean.class);</pre>
-</div></div><h3 id="BookComponentAppendix-BeanBinding"><br clear="none">Bean
Binding</h3><p>How bean methods to be invoked are chosen (if they are not
specified explicitly through the <strong>method</strong> parameter) and how
parameter values are constructed from the <a shape="rect"
href="message.html">Message</a> are all defined by the <a shape="rect"
href="bean-binding.html">Bean Binding</a> mechanism which is used throughout
all of the various <a shape="rect" href="bean-integration.html">Bean
Integration</a> mechanisms in Camel.</p><p><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></p><ul><li><a shape="rect"
href="class.html">Class</a> component</li><li><a shape="rect"
href="bean-binding.html">Bean Binding</a></li><li><a shape="rect"
href="bean-integration.html">Bean Integration</a></li></ul> <div
class="error"><span class="error">Unable to render {include}</span> The
included page could not be found.</div> <h2
id="BookComponentAppendix-BrowseComponent">Brows
e Component</h2>
+</div></div><h3 id="BookComponentAppendix-BeanBinding"><br clear="none">Bean
Binding</h3><p>How bean methods to be invoked are chosen (if they are not
specified explicitly through the <strong>method</strong> parameter) and how
parameter values are constructed from the <a shape="rect"
href="message.html">Message</a> are all defined by the <a shape="rect"
href="bean-binding.html">Bean Binding</a> mechanism which is used throughout
all of the various <a shape="rect" href="bean-integration.html">Bean
Integration</a> mechanisms in Camel.</p><p><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></p><ul><li><a shape="rect"
href="class.html">Class</a> component</li><li><a shape="rect"
href="bean-binding.html">Bean Binding</a></li><li><a shape="rect"
href="bean-integration.html">Bean Integration</a></li></ul></div> <div
class="error conf-macro output-block" data-hasbody="false"
data-macro-name="include"><span class="error">Unable to render {include}</span>
The included page c
ould not be found.</div> <div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h2
id="BookComponentAppendix-BrowseComponent">Browse Component</h2>
<p>The Browse component provides a simple <a shape="rect"
href="browsableendpoint.html">BrowsableEndpoint</a> which can be useful for
testing, visualisation tools or debugging. The exchanges sent to the endpoint
are all available to be browsed.</p>
@@ -422,8 +422,8 @@ browse:someName[?options]
</div></div>
-<h3 id="BookComponentAppendix-SeeAlso.2">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul> <h2
id="BookComponentAppendix-CacheComponent">Cache Component</h2><div
class="confluence-information-macro confluence-information-macro-warning
conf-macro output-block" data-hasbody="true" data-macro-name="warning"><span
class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"> </span><div
class="confluence-information-macro-body"><p>This component is deprecated. As
of Camel 2.18.0 You should use <a shape="rect"
href="ehcache.html">Ehcache</a>.</p></div></div><p><strong>Available as of
Camel 2.1</strong></p><p>The <strong>cache</strong> component enables you to
perform caching operations using EHCache as the Cache Implementation. The cache
itself is created on demand or if a cache of
that name already exists then it is simply utilized with its original
settings.</p><p>This component supports producer and event based consumer
endpoints.</p><p>The Cache consumer is an event based consumer and can be used
to listen and respond to specific cache activities. If you need to perform
selections from a pre-existing cache, use the processors defined for the cache
component.</p><p>Maven users will need to add the following dependency to their
<code>pom.xml</code> for this component:</p><div class="code panel pdl
conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h3 id="BookComponentAppendix-SeeAlso.2">See Also</h3>
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul></div></div> <div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2 id="BookComponentAppendix-CacheComponent">Cache
Component</h2><div class="confluence-information-macro
confluence-information-macro-warning conf-macro output-block"
data-hasbody="true" data-macro-name="warning"><span class="aui-icon
aui-icon-small aui-iconfont-error confluence-information-macro-icon">
</span><div class="confluence-information-macro-body"><p>This component is
deprecated. As of Camel 2.18.0 You should use <a shape="rect"
href="ehcache.html">Ehcache</a>.</p></div></div><p><strong>Available as of
Camel 2.1</strong></p><p>The <strong>cache</strong> component enables you to
perform caching operations us
ing EHCache as the Cache Implementation. The cache itself is created on demand
or if a cache of that name already exists then it is simply utilized with its
original settings.</p><p>This component supports producer and event based
consumer endpoints.</p><p>The Cache consumer is an event based consumer and can
be used to listen and respond to specific cache activities. If you need to
perform selections from a pre-existing cache, use the processors defined for
the cache component.</p><p>Maven users will need to add the following
dependency to their <code>pom.xml</code> for this component:</p><div
class="code panel pdl conf-macro output-block" data-hasbody="true"
data-macro-name="code" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cache</artifactId>
@@ -584,7 +584,7 @@ browse:someName[?options]
</div></div><p>Of course you can do the same thing in straight Java:</p><div
class="code panel pdl conf-macro output-block" data-hasbody="true"
data-macro-name="code" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default"
data-theme="Default">ManagementService.registerMBeans(CacheManager.getInstance(),
mbeanServer, true, true, true, true);
</pre>
-</div></div><p>You can get cache hits, misses, in-memory hits, disk hits, size
stats this way. You can also change CacheConfiguration parameters on the
fly.</p><h3 id="BookComponentAppendix-CachereplicationCamel2.8+">Cache
replication Camel 2.8+</h3><p>The Camel Cache component is able to distribute a
cache across server nodes using several different replication mechanisms
including: RMI, JGroups, JMS and Cache Server.</p><p>There are two different
ways to make it work:</p><p><strong>1.</strong> You can configure
<code>ehcache.xml</code> manually</p><p>OR</p><p><strong>2.</strong> You can
configure these three options:</p><ul
class="alternate"><li>cacheManagerFactory</li><li>eventListenerRegistry</li><li>cacheLoaderRegistry</li></ul><p>Configuring
Camel Cache replication using the first option is a bit of hard work as you
have to configure all caches separately. So in a situation when the all names
of caches are not known, using <code>ehcache.xml</code> is not a good
idea.</p><p>The
second option is much better when you want to use many different caches as
you do not need to define options per cache. This is because replication
options are set per <code>CacheManager</code> and per
<code>CacheEndpoint</code>. Also it is the only way when cache names are not
know at the development phase.</p><div class="confluence-information-macro
confluence-information-macro-note conf-macro output-block" data-hasbody="true"
data-macro-name="note"><span class="aui-icon aui-icon-small
aui-iconfont-warning confluence-information-macro-icon"> </span><div
class="confluence-information-macro-body"><p>It might be useful to read the <a
shape="rect" class="external-link" href="http://ehcache.org/documentation"
rel="nofollow">EHCache manual</a> to get a better understanding of the Camel
Cache replication mechanism.</p></div></div><h4
id="BookComponentAppendix-Example:JMScachereplication">Example: JMS cache
replication</h4><p>JMS replication is the most powerful and secured replication
m
ethod. Used together with Camel Cache replication makes it also rather
simple.<br clear="none"> An example is available on <a shape="rect"
href="cachereplicationjmsexample.html">a separate page</a>.</p> <h2
id="BookComponentAppendix-ClassComponent">Class
Component</h2><p><strong>Available as of Camel 2.4</strong></p><p>The
<strong>class:</strong> component binds beans to Camel message exchanges. It
works in the same way as the <a shape="rect" href="bean.html">Bean</a>
component but instead of looking up beans from a <a shape="rect"
href="registry.html">Registry</a> it creates the bean based on the class
name.</p><h3 id="BookComponentAppendix-URIformat.6">URI format</h3><div
class="code panel pdl conf-macro output-block" data-hasbody="true"
data-macro-name="code" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+</div></div><p>You can get cache hits, misses, in-memory hits, disk hits, size
stats this way. You can also change CacheConfiguration parameters on the
fly.</p><h3 id="BookComponentAppendix-CachereplicationCamel2.8+">Cache
replication Camel 2.8+</h3><p>The Camel Cache component is able to distribute a
cache across server nodes using several different replication mechanisms
including: RMI, JGroups, JMS and Cache Server.</p><p>There are two different
ways to make it work:</p><p><strong>1.</strong> You can configure
<code>ehcache.xml</code> manually</p><p>OR</p><p><strong>2.</strong> You can
configure these three options:</p><ul
class="alternate"><li>cacheManagerFactory</li><li>eventListenerRegistry</li><li>cacheLoaderRegistry</li></ul><p>Configuring
Camel Cache replication using the first option is a bit of hard work as you
have to configure all caches separately. So in a situation when the all names
of caches are not known, using <code>ehcache.xml</code> is not a good
idea.</p><p>The
second option is much better when you want to use many different caches as
you do not need to define options per cache. This is because replication
options are set per <code>CacheManager</code> and per
<code>CacheEndpoint</code>. Also it is the only way when cache names are not
know at the development phase.</p><div class="confluence-information-macro
confluence-information-macro-note conf-macro output-block" data-hasbody="true"
data-macro-name="note"><span class="aui-icon aui-icon-small
aui-iconfont-warning confluence-information-macro-icon"> </span><div
class="confluence-information-macro-body"><p>It might be useful to read the <a
shape="rect" class="external-link" href="http://ehcache.org/documentation"
rel="nofollow">EHCache manual</a> to get a better understanding of the Camel
Cache replication mechanism.</p></div></div><h4
id="BookComponentAppendix-Example:JMScachereplication">Example: JMS cache
replication</h4><p>JMS replication is the most powerful and secured replication
m
ethod. Used together with Camel Cache replication makes it also rather
simple.<br clear="none"> An example is available on <a shape="rect"
href="cachereplicationjmsexample.html">a separate page</a>.</p></div> <div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2 id="BookComponentAppendix-ClassComponent">Class
Component</h2><p><strong>Available as of Camel 2.4</strong></p><p>The
<strong>class:</strong> component binds beans to Camel message exchanges. It
works in the same way as the <a shape="rect" href="bean.html">Bean</a>
component but instead of looking up beans from a <a shape="rect"
href="registry.html">Registry</a> it creates the bean based on the class
name.</p><h3 id="BookComponentAppendix-URIformat.6">URI format</h3><div
class="code panel pdl conf-macro output-block" data-hasbody="true"
data-macro-name="code" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default" data-theme="Default">class:className[?options]
</pre>
</div></div><p>Where <strong>className</strong> is the fully qualified class
name to create and use as bean.</p><h3
id="BookComponentAppendix-Options.4">Options</h3><div
class="confluenceTableSmall conf-macro output-block" data-hasbody="true"
data-macro-name="div"><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>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>method</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The method name that bean will be invoked.
If not provided, Camel will try to pick the method its
elf. In case of ambiguity an exception is thrown. See <a shape="rect"
href="bean-binding.html">Bean Binding</a> for more
details.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>multiParameterArray</code></p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>boolean</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How to treat the parameters which are
passed from the message body; if it is <code>true</code>, the In message body
should be an array of parameters.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>bean.xxx</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.17:</strong> To configure additional
options on the create bean instance from the class na
me. For example to configure a foo option on the bean, use
bean.foo=123.</p></td></tr></tbody></table></div></div>
@@ -618,8 +618,8 @@ browse:someName[?options]
.to("class:org.apache.camel.component.bean.MyPrefixBean?cool=#foo")
.to("mock:result");
</pre>
-</div></div><p>Which will lookup a bean from the <a shape="rect"
href="registry.html">Registry</a> with the id <code>foo</code> and invoke the
<code>setCool</code> method on the created instance of the
<code>MyPrefixBean</code> class.</p><div class="confluence-information-macro
confluence-information-macro-tip conf-macro output-block" data-hasbody="true"
data-macro-name="tip"><p class="title">See more</p><span class="aui-icon
aui-icon-small aui-iconfont-approve confluence-information-macro-icon">
</span><div class="confluence-information-macro-body"><p>See more details at
the <a shape="rect" href="bean.html">Bean</a> component as the
<strong>class</strong> component works in much the same way.</p></div></div><p>
</p><h3 id="BookComponentAppendix-SeeAlso.3">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul><p> </p><ul><li><a
shape="rect" href="bean.html">Bean</a></li><li><a shape="rect"
href="bean-binding.html">Bean Binding</a></li><li><a shape="rect"
href="bean-integration.html">Bean Integration</a></li></ul> <h2
id="BookComponentAppendix-CometdComponent">Cometd Component</h2><p>The
<strong>cometd:</strong> component is a transport for working with the <a
shape="rect" class="external-link" href="http://www.mortbay.org/jetty"
rel="nofollow">jetty</a> implementation of the <a shape="rect"
class="external-link"
href="http://docs.codehaus.org/display/JETTY/Cometd+%28aka+Bayeux%29"
rel="nofollow">cometd/bayeux protocol</a>.<br clear="none"> Using this
component in combination with the dojo toolkit library it's possible
to push Camel messages directly into the browser using an AJAX based
mechanism.</p><p>Maven users will need to add the following dependency to their
<code>pom.xml</code> for this component:</p><div class="code panel pdl
conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Which will lookup a bean from the <a shape="rect"
href="registry.html">Registry</a> with the id <code>foo</code> and invoke the
<code>setCool</code> method on the created instance of the
<code>MyPrefixBean</code> class.</p><div class="confluence-information-macro
confluence-information-macro-tip conf-macro output-block" data-hasbody="true"
data-macro-name="tip"><p class="title">See more</p><span class="aui-icon
aui-icon-small aui-iconfont-approve confluence-information-macro-icon">
</span><div class="confluence-information-macro-body"><p>See more details at
the <a shape="rect" href="bean.html">Bean</a> component as the
<strong>class</strong> component works in much the same way.</p></div></div><p>
</p><div class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h3 id="BookComponentAppendix-SeeAlso.3">See Also</h3>
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul></div><p>
</p><ul><li><a shape="rect" href="bean.html">Bean</a></li><li><a shape="rect"
href="bean-binding.html">Bean Binding</a></li><li><a shape="rect"
href="bean-integration.html">Bean Integration</a></li></ul></div> <div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2 id="BookComponentAppendix-CometdComponent">Cometd
Component</h2><p>The <strong>cometd:</strong> component is a transport for
working with the <a shape="rect" class="external-link"
href="http://www.mortbay.org/jetty" rel="nofollow">jetty</a> implementation of
the <a shape="rect" class="external-link"
href="http://docs.codehaus.org/display/JETTY/Cometd+%28aka+Bayeux%29"
rel="nofollow">cometd/bayeux protocol</a>.<
br clear="none"> Using this component in combination with the dojo toolkit
library it's possible to push Camel messages directly into the browser using an
AJAX based mechanism.</p><p>Maven users will need to add the following
dependency to their <code>pom.xml</code> for this component:</p><div
class="code panel pdl conf-macro output-block" data-hasbody="true"
data-macro-name="code" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cometd</artifactId>
@@ -679,8 +679,8 @@ commetdComponent.setSslContextParameters
...
<to
uri="cometds://127.0.0.1:443/service/test?baseResource=file:./target/test-classes/webapp&timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2"/>...
</pre>
-</div></div><p> </p><h3 id="BookComponentAppendix-SeeAlso.4">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul><p> </p> <h2
id="BookComponentAppendix-ContextComponent">Context
Component</h2><p><strong>Available as of Camel 2.7</strong></p><div
class="confluence-information-macro confluence-information-macro-warning
conf-macro output-block" data-hasbody="true" data-macro-name="warning"><span
class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"> </span><div
class="confluence-information-macro-body"><p>Deprecated do NOT
use</p></div></div><p> </p><p>The <strong>context</strong> component
allows you to create new Camel Components from a CamelContext with a number of
routes which is then treated as a black box, allowing you to refer to the local
endpoints within the component from other Cam
elContexts.</p><p>It is similar to the <a shape="rect"
href="routebox.html">Routebox</a> component in idea, though the Context
component tries to be really simple for end users; just a simple convention
over configuration approach to refer to local endpoints inside the CamelContext
Component.</p><p>Maven users will need to add the following dependency to their
<code>pom.xml</code> for this component:</p><div class="code panel pdl
conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p> </p><div class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h3 id="BookComponentAppendix-SeeAlso.4">See Also</h3>
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul></div><p> </p></div>
<div class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2
id="BookComponentAppendix-ContextComponent">Context
Component</h2><p><strong>Available as of Camel 2.7</strong></p><div
class="confluence-information-macro confluence-information-macro-warning
conf-macro output-block" data-hasbody="true" data-macro-name="warning"><span
class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"> </span><div
class="confluence-information-macro-body"><p>Deprecated do NOT
use</p></div></div><p> </p><p>The <strong>context</strong> component
allows you to create new Camel Components from a CamelContext with a number of
routes which is then treated
as a black box, allowing you to refer to the local endpoints within the
component from other CamelContexts.</p><p>It is similar to the <a shape="rect"
href="routebox.html">Routebox</a> component in idea, though the Context
component tries to be really simple for end users; just a simple convention
over configuration approach to refer to local endpoints inside the CamelContext
Component.</p><p>Maven users will need to add the following dependency to their
<code>pom.xml</code> for this component:</p><div class="code panel pdl
conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java;
gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-context</artifactId>
@@ -735,7 +735,7 @@ registry.bind("accounts", blackBox);
</route>
</camelContext>
</pre>
-</div></div><h4 id="BookComponentAppendix-Namingendpoints">Naming
endpoints</h4><p>A context component instance can have many public input and
output endpoints that can be accessed from outside it's CamelContext. When
there are many it is recommended that you use logical names for them to hide
the middleware as shown above.</p><p>However when there is only one input,
output or error/dead letter endpoint in a component we recommend using the
common posix shell names <strong>in</strong>, <strong>out</strong> and
<strong>err</strong></p> <h2
id="BookComponentAppendix-CryptocomponentforDigitalSignatures">Crypto component
for Digital Signatures</h2><p><strong>Available as of Camel
2.3</strong></p><p>With Camel cryptographic endpoints and Java's Cryptographic
extension it is easy to create Digital Signatures for <a shape="rect"
href="exchange.html">Exchange</a>s. Camel provides a pair of flexible endpoints
which get used in concert to create a signature for an exchange in one part of
the
exchange's workflow and then verify the signature in a later part of the
workflow.</p><p>Maven users will need to add the following dependency to their
<code>pom.xml</code> for this component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
+</div></div><h4 id="BookComponentAppendix-Namingendpoints">Naming
endpoints</h4><p>A context component instance can have many public input and
output endpoints that can be accessed from outside it's CamelContext. When
there are many it is recommended that you use logical names for them to hide
the middleware as shown above.</p><p>However when there is only one input,
output or error/dead letter endpoint in a component we recommend using the
common posix shell names <strong>in</strong>, <strong>out</strong> and
<strong>err</strong></p></div> <div class="conf-macro output-block"
data-hasbody="false" data-macro-name="include"><h2
id="BookComponentAppendix-CryptocomponentforDigitalSignatures">Crypto component
for Digital Signatures</h2><p><strong>Available as of Camel
2.3</strong></p><p>With Camel cryptographic endpoints and Java's Cryptographic
extension it is easy to create Digital Signatures for <a shape="rect"
href="exchange.html">Exchange</a>s. Camel provides a pair of flexible end
points which get used in concert to create a signature for an exchange in one
part of the exchange's workflow and then verify the signature in a later part
of the workflow.</p><p>Maven users will need to add the following dependency to
their <code>pom.xml</code> for this component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-crypto</artifactId>
<version>x.x.x</version>
@@ -752,7 +752,7 @@ Exchange signed = getMandatoryEndpoint("
signed.getIn().copyFrom(unsigned.getOut());
signed.getIn().setHeader(KEYSTORE_ALIAS, "bob");
template.send("direct:alias-verify", signed);
-</plain-text-body><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p><ul><li><a
shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a
shape="rect" href="data-format.html">Data Format</a></li></ul> <h2
id="BookComponentAppendix-CXFComponent">CXF
Component</h2><rich-text-body><p>When using CXF as a consumer, the <a
shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows you
to factor out how message payloads are received from their processing as a
RESTful or SOAP web service. This has the potential of using a multitude of
transports to consume web services. The bean component's configuration is also
simpler and provides the fastest method to implement web services using Camel
and CXF.</p></rich-text-body><rich-text-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></rich-text-body><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> </p><p>Maven users will need to add the following
dependency to their <code>pom.xml</code> for this component:</p><parameter
ac:name="language">xml</parameter><plain-text-body><dependency>
+</plain-text-body><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p><ul><li><a
shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a
shape="rect" href="data-format.html">Data Format</a></li></ul></div> <div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2 id="BookComponentAppendix-CXFComponent">CXF
Component</h2><rich-text-body><p>When using CXF as a consumer, the <a
shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows you
to factor out how message payloads are received from their processing as a
RESTful or SOAP web service. This has the potential of using a multitude of
transports to consume web services. The bean component's configuration is also
simpler and provides the fastest method to implement web services using Camel
and CXF.</p></rich-text-body><rich-text-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></rich-text-body><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> </p><p>Maven
users will need to add the following dependency to their <code>pom.xml</code>
for this component:</p><parameter
ac:name="language">xml</parameter><plain-text-body><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>x.x.x</version>
@@ -891,7 +891,7 @@ template.send("direct:alias-verify", sig
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
- </cxf:cxfEndpoint></plain-text-body><p>It is noted that the default
CXF dispatch client does not send a specific SOAPAction header. Therefore, when
the target service requires a specific SOAPAction value, it is supplied in the
Camel header using the key SOAPAction
(case-insensitive).</p><p> </p><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p> <h2
id="BookComponentAppendix-CXFBeanComponent">CXF Bean Component</h2><p>The
<strong>cxfbean:</strong> component allows other Camel endpoints to send
exchange and invoke Web service bean objects. <strong>Currently, it only
supports JAX-RS and JAX-WS (new to Camel 2.1) annotated service
beans.</strong></p><rich-text-body><p><code>CxfBeanEndpoint</code> is a
<code>ProcessorEndpoint</code> so it has no consumers. It works similarly to a
Bean component.</p></rich-text-body><p><span style="color: rgb(0,0,0);">Maven
users need to add the following dependency to their pom.xml t
o use the CXF Bean Component:</span></p><parameter
ac:name="language">xml</parameter><plain-text-body><dependency>
+ </cxf:cxfEndpoint></plain-text-body><p>It is noted that the default
CXF dispatch client does not send a specific SOAPAction header. Therefore, when
the target service requires a specific SOAPAction value, it is supplied in the
Camel header using the key SOAPAction
(case-insensitive).</p><p> </p><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p></div> <div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2 id="BookComponentAppendix-CXFBeanComponent">CXF
Bean Component</h2><p>The <strong>cxfbean:</strong> component allows other
Camel endpoints to send exchange and invoke Web service bean objects.
<strong>Currently, it only supports JAX-RS and JAX-WS (new to Camel 2.1)
annotated service
beans.</strong></p><rich-text-body><p><code>CxfBeanEndpoint</code> is a
<code>ProcessorEndpoint</code> so it has no consumers. It works similarly to a
Bean component.</p></rich-text-body><p><span styl
e="color: rgb(0,0,0);">Maven users need to add the following dependency to
their pom.xml to use the CXF Bean Component:</span></p><parameter
ac:name="language">xml</parameter><plain-text-body><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<!-- use the same version as your Camel core version: -->
@@ -902,7 +902,7 @@ template.send("direct:alias-verify", sig
</rich-text-body><h3 id="BookComponentAppendix-Headers">Headers</h3><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<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> Description </p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p> Type </p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p> Required? </p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p> Default Value </p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p> In/Out </p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p> Examples </p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p> <code>CamelHttpCharacterEncoding</code> (before
2.0-m2: <code>CamelCxfBeanCharacterEncoding</code>) </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> Character encoding </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> No </p></td><td
colspan="1" rowspan="1" class="c
onfluenceTd"><p> None </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> In </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> ISO-8859-1 </p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p> <code>CamelContentType</code> (before
2.0-m2: <code>CamelCxfBeanContentType</code>) </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> Content type </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> No </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> *<strong>/</strong>* </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> In </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> <code>text/xml</code>
</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
CamelHttpBaseUri <br clear="none" class="atl-forced-newline">
(2.0-m3 and before: <code>CamelCxfBeanRequestBasePath</code>) </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> The value of this header will
be set in the CXF message as the <code>Message.BASE_PATH</code> property. It
is needed by CXF JAX-RS processing. Basically, it is the scheme, host and port
portion of the request URI. </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> Yes </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> The Endpoint URI of the source endpoint in the Camel
exchange </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> In
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect"
class="external-link" href="http://localhost:9000"
rel="nofollow">http://localhost:9000</a> </p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p> <code>CamelHttpPath</code> (before 2.0-m2:
<code>CamelCxfBeanRequestPat</code>h
) </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Request URI's
path </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>String</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Yes </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> None </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> In </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> <code>consumer/123</code> </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p> <code>CamelHttpMethod</code>
(before 2.0-m2: <code>CamelCxfBeanVerb</code>) </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> RESTful request verb </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Yes </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> None </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> In </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> <code>GET</code>, <code>PUT</code>,
<code>POST</code>, <code>DELETE</code> </p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p> <code>CamelHttpResponseCode</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> HTTP response
code </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>Integer</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> No <br clear="none" class="atl-forced-newline">
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> None </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> Out <br clear="none"
class="atl-forced-newline"> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> 200 <br clear="none" class="atl-forced-newline">
</p></td></tr></tbody></table></div>
-</rich-text-body><rich-text-body><p>Currently, the CXF Bean component has
(only) been tested with the <a shape="rect" href="jetty.html">Jetty
component</a>. It understands headers from <a shape="rect"
href="jetty.html">Jetty component</a> without requiring
conversion.</p></rich-text-body><h3 id="BookComponentAppendix-AWorkingSample">A
Working Sample</h3><p>This sample shows how to create a route that starts an
embedded Jetty HTTP server. The route sends requests to a CXF Bean and invokes
a JAX-RS annotated service.</p><p>First, create a route as follows: The
<code>from</code> endpoint is a Jetty HTTP endpoint that is listening on port
9000. Notice that the <code>matchOnUriPrefix</code> option must be set to
<code>true</code> because the RESTful request URI will not exactly match the
endpoint's URI
http:­//localhost:9000.</p><plain-text-body>{snippet:id=routeDefinition|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBean
Test-context.xml}</plain-text-body><p>The <code>to</code> endpoint is a CXF
Bean with bean name <code>customerServiceBean</code>. The name will be looked
up from the registry. Next, we make sure our service bean is available in
Spring registry. We create a bean definition in the Spring configuration. In
this example, we create a List of service beans (of one element). We could have
created just a single bean without a
List.</p><plain-text-body>{snippet:id=beanDefinition|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml}</plain-text-body><p>That's
it. Once the route is started, the web service is ready for business. A HTTP
client can make a request and receive response.</p> <h2
id="BookComponentAppendix-CXFRSComponent">CXFRS
Component</h2><rich-text-body><p>When using CXF as a consumer, the <a
shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows you
to factor out how message payloads ar
e received from their processing as a RESTful or SOAP web service. This has
the potential of using a multitude of transports to consume web services. The
bean component's configuration is also simpler and provides the fastest method
to implement web services using Camel and CXF.</p></rich-text-body><p>The
<strong>cxfrs:</strong> component provides integration with <a shape="rect"
href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-RS 1.1 and
2.0 services hosted in CXF.</p><p>Maven users will need to add the following
dependency to their pom.xml for this component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
+</rich-text-body><rich-text-body><p>Currently, the CXF Bean component has
(only) been tested with the <a shape="rect" href="jetty.html">Jetty
component</a>. It understands headers from <a shape="rect"
href="jetty.html">Jetty component</a> without requiring
conversion.</p></rich-text-body><h3 id="BookComponentAppendix-AWorkingSample">A
Working Sample</h3><p>This sample shows how to create a route that starts an
embedded Jetty HTTP server. The route sends requests to a CXF Bean and invokes
a JAX-RS annotated service.</p><p>First, create a route as follows: The
<code>from</code> endpoint is a Jetty HTTP endpoint that is listening on port
9000. Notice that the <code>matchOnUriPrefix</code> option must be set to
<code>true</code> because the RESTful request URI will not exactly match the
endpoint's URI
http:­//localhost:9000.</p><plain-text-body>{snippet:id=routeDefinition|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBean
Test-context.xml}</plain-text-body><p>The <code>to</code> endpoint is a CXF
Bean with bean name <code>customerServiceBean</code>. The name will be looked
up from the registry. Next, we make sure our service bean is available in
Spring registry. We create a bean definition in the Spring configuration. In
this example, we create a List of service beans (of one element). We could have
created just a single bean without a
List.</p><plain-text-body>{snippet:id=beanDefinition|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml}</plain-text-body><p>That's
it. Once the route is started, the web service is ready for business. A HTTP
client can make a request and receive response.</p></div> <div
class="conf-macro output-block" data-hasbody="false"
data-macro-name="include"><h2 id="BookComponentAppendix-CXFRSComponent">CXFRS
Component</h2><rich-text-body><p>When using CXF as a consumer, the <a
shape="rect" href="cxf-be
an-component.html">CXF Bean Component</a> allows you to factor out how message
payloads are received from their processing as a RESTful or SOAP web service.
This has the potential of using a multitude of transports to consume web
services. The bean component's configuration is also simpler and provides the
fastest method to implement web services using Camel and
CXF.</p></rich-text-body><p>The <strong>cxfrs:</strong> component provides
integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a>
for connecting to JAX-RS 1.1 and 2.0 services hosted in CXF.</p><p>Maven users
will need to add the following dependency to their pom.xml for this
component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>x.x.x</version> <!-- use the same version as your
Camel core version -->
@@ -932,7 +932,7 @@ Payload:
<project>Apache Camel</project>
</Customer>
</plain-text-body><p>Will print the message:</p><parameter
ac:name="language">xml</parameter><plain-text-body>Request: type=gold,
active=true, customerData=<Customer.toString() representation>
-</plain-text-body><p>For more examples on how to process requests and write
responses can be found <a shape="rect" class="external-link"
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/simplebinding/">here</a>.</p><h3
id="BookComponentAppendix-ConsumingaRESTRequest-DefaultBindingStyle">Consuming
a REST Request - Default Binding Style</h3><p>The <a shape="rect"
class="external-link" href="https://cwiki.apache.org/CXF20DOC/JAX-RS">CXF JAXRS
front end</a> implements the <a shape="rect" class="external-link"
href="https://jsr311.java.net/" rel="nofollow">JAX-RS (JSR-311) API</a>, so we
can export the resources classes as a REST service. And we leverage the <a
shape="rect" class="external-link"
href="http://cwiki.apache.org/confluence/display/CXF20DOC/Invokers">CXF Invoker
API</a> to turn a REST request into a normal Java object method invocation.<br
clear="none"> Unlike the <a shape="rect" href="restlet.html
">Camel Restlet</a> component, you don't need to specify the URI template
within your endpoint, CXF takes care of the REST request URI to resource class
method mapping according to the JSR-311 specification. All you need to do in
Camel is delegate this method request to a right processor or
endpoint.</p><p>Here is an example of a CXFRS
route...<plain-text-body>{snippet:id=example|lang=java|url=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java}</plain-text-body>And
the corresponding resource class used to configure the
endpoint...</p><parameter ac:name="title">Note about resource
classes</parameter><rich-text-body><p>By default, JAX-RS resource classes are
<strong>only </strong>used to configure JAX-RS properties. Methods will
<strong>not</strong> be executed during routing of messages to the endpoint.
Instead, it is the responsibility of the route to do all processing.</p><p>Note
that starting from Camel 2.15 it is also s
ufficient to provide an interface only as opposed to a no-op service
implementation class for the default mode.</p><p>Starting from Camel 2.15, if a
<strong>performInvocation</strong> option is enabled, the service
implementation will be invoked first, the response will be set on the Camel
exchange and the route execution will continue as usual. This can be useful
for</p><p>integrating the existing JAX-RS implementations into Camel routes and
for post-processing JAX-RS Responses in custom
processors.</p><p> </p></rich-text-body><p><plain-text-body>{snippet:id=example|lang=java|url=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerServiceResource.java}</plain-text-body></p><h3
id="BookComponentAppendix-HowtoinvoketheRESTservicethroughcamel-cxfrsproducer">How
to invoke the REST service through camel-cxfrs producer</h3><p>The <a
shape="rect" class="external-link"
href="https://cwiki.apache.org/CXF20DOC/JAX-RS">CXF JAXRS front
end</a> implements <a shape="rect" class="external-link"
href="https://cwiki.apache.org/CXF20DOC/JAX-RS+Client+API#JAX-RSClientAPI-Proxy-basedAPI">a
proxy-based client API</a>, with this API you can invoke the remote REST
service through a proxy. The <code>camel-cxfrs</code> producer is based on
this <a shape="rect" class="external-link"
href="https://cwiki.apache.org/CXF20DOC/JAX-RS+Client+API#JAX-RSClientAPI-Proxy-basedAPI">proxy
API</a>.<br clear="none"> You just need to specify the operation name in the
message header and prepare the parameter in the message body, the
<span>camel-cxfrs</span> producer will generate right REST request for
you.</p><p>Here is an
example:<plain-text-body>{snippet:id=ProxyExample|lang=java|url=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java}</plain-text-body>The <a
shape="rect" class="external-link"
href="https://cwiki.apache.org/CXF20DOC/JAX-RS">CXF JAXRS front end</a> also p
rovides <a shape="rect"
href="https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Client+API#JAX-RSClientAPI-CXFWebClientAPI">a
http centric client API</a>. You can also invoke this API from
<code>camel-cxfrs</code> producer. You need to specify the <a shape="rect"
class="external-link"
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#HTTP_PATH">HTTP_PATH</a>
and the <a shape="rect" class="external-link"
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#HTTP_METHOD">HTTP_METHOD</a> and
let the producer use the http centric client API by using the URI option
<strong>httpClientAPI</strong> or by setting the message header <a shape="rect"
class="external-link"
href="http://camel.apache.org/maven/current/camel-cxf/apidocs/org/apache/camel/component/cxf/CxfConstants.html#CAMEL_CXF_RS_USING_HTTP_API">CxfConstants.CAMEL_CXF_RS_USING_HTTP_API</a>.
You can turn the response ob
ject to the type class specified with the message header <a shape="rect"
class="external-link"
href="http://camel.apache.org/maven/current/camel-cxf/apidocs/org/apache/camel/component/cxf/CxfConstants.html#CAMEL_CXF_RS_RESPONSE_CLASS">CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS</a>.<plain-text-body>{snippet:id=HttpExample|lang=java|url=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java}</plain-text-body>From
Camel 2.1, we also support to specify the query parameters from cxfrs URI for
the CXFRS http centric
client.<plain-text-body>{snippet:id=QueryExample|lang=java|url=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java}</plain-text-body>To
support the Dynamical routing, you can override the URI's query parameters by
using the CxfConstants.CAMEL_CXF_RS_QUERY_MAP header to set the parameter map
for it.<plain-text-body>{snippet:id=QueryMapExample|lang=java|url=camel/trunk/c
omponents/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsProducerTest.java}</plain-text-body></p>
<h2 id="BookComponentAppendix-DataSetComponent">DataSet Component</h2><p><a
shape="rect" href="testing.html">Testing</a> of distributed and asynchronous
processing is notoriously difficult. The <a shape="rect"
href="mock.html">Mock</a>, <a shape="rect" href="test.html">Test</a> and <a
shape="rect" href="dataset.html">DataSet</a> endpoints work great with the <a
shape="rect" href="testing.html">Camel Testing Framework</a> to simplify your
unit and integration testing using <a shape="rect"
href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a>
and Camel's large range of <a shape="rect"
href="components.html">Components</a> together with the powerful <a
shape="rect" href="bean-integration.html">Bean Integration</a>.</p><p>The
DataSet component provides a mechanism to easily perform load & soak
testing of your system. It works by allowing you
to create <a shape="rect" class="external-link"
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/dataset/DataSet.html">DataSet
instances</a> both as a source of messages and as a way to assert that the
data set is received.</p><p>Camel will use the <a shape="rect"
href="log.html">throughput logger</a> when sending dataset's.</p><h3
id="BookComponentAppendix-URIformat.13">URI format</h3><div class="code panel
pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
[... 729 lines stripped ...]