You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2018/10/17 09:28:10 UTC

svn commit: r1036341 [2/17] - in /websites/production/camel/content: ./ 2015/10/14/ 2018/10/ 2018/10/17/ cache/

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 Oct 17 09:28:08 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><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
+<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
 </plain-text-body><p>Where&#160;<strong><code>destinationName</code></strong> is an ActiveMQ queue or topic name. By default, the&#160;<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
   &lt;artifactId&gt;activemq-camel&lt;/artifactId&gt;
   &lt;version&gt;5.6.0&lt;/version&gt;
 &lt;/dependency&gt;
-</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">
+</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">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-amqp&lt;/artifactId&gt;
@@ -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()&gt; repo-add camel
 karaf@root()&gt; 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&#160;<strong><code>camel-spring</code></strong> features to define routes in those contexts.</p><p>&#160;</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>&#160;</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">
+</div></div><p>and the environment would be set.</p><p>Use the <strong><code>camel-blueprint</code></strong> or&#160;<strong><code>camel-spring</code></strong> features to define routes in those contexts.</p><p>&#160;</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>&#160;</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">
 <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&#160;<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>&lt;dependency&gt;
+</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&#160;<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>&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-atom&lt;/artifactId&gt;
     &lt;version&gt;x.x.x&lt;/version&gt;
@@ -325,7 +325,7 @@ registry.bind("client", client);
 &lt;/dependency&gt;
 </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">&#160;</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">&#160;</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&amp;option=value&amp;...</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&lt;Entry&gt;</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&lt;Entry&gt;)</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></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">&#160;</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>&#160;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&amp;option=value&amp;...</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">
+</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">&#160;</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>&#160;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&amp;option=value&amp;...</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">
 <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> <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>
+</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>
 
 <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>
 
 
-<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">
+<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">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-cache&lt;/artifactId&gt;
@@ -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></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">
+</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">
 <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">&#160;</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><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">
+</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">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-cometd&lt;/artifactId&gt;
@@ -679,8 +679,8 @@ commetdComponent.setSslContextParameters
 ...
   &lt;to uri="cometds://127.0.0.1:443/service/test?baseResource=file:./target/test-classes/webapp&amp;timeout=240000&amp;interval=0&amp;maxInterval=30000&amp;multiFrameInterval=1500&amp;jsonCommented=true&amp;logLevel=2"/&gt;...
 </pre>
-</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>&#160;</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">
+</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>&#160;</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">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-context&lt;/artifactId&gt;
@@ -735,7 +735,7 @@ registry.bind("accounts", blackBox);
   &lt;/route&gt;
 &lt;/camelContext&gt;
 </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></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>&lt;dependency&gt;
+</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>&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-crypto&lt;/artifactId&gt;
     &lt;version&gt;x.x.x&lt;/version&gt;
@@ -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></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>&lt;dependency&gt;
+</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>&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-cxf&lt;/artifactId&gt;
     &lt;version&gt;x.x.x&lt;/version&gt;
@@ -891,7 +891,7 @@ template.send("direct:alias-verify", sig
      &lt;cxf:properties&gt;
        &lt;entry key="dataFormat" value="PAYLOAD"/&gt;
      &lt;/cxf:properties&gt;
-   &lt;/cxf:cxfEndpoint&gt;</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>&#160;</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>&lt;dependency&gt;
+   &lt;/cxf:cxfEndpoint&gt;</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>&#160;</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>&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-cxf&lt;/artifactId&gt;
     &lt;!-- use the same version as your Camel core version: --&gt;
@@ -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:&#173;//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>&lt;dependency&gt;
+</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:&#173;//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>&lt;dependency&gt;
    &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
    &lt;artifactId&gt;camel-cxf&lt;/artifactId&gt;
    &lt;version&gt;x.x.x&lt;/version&gt;  &lt;!-- use the same version as your Camel core version --&gt;
@@ -932,7 +932,7 @@ Payload:
   &lt;project&gt;Apache Camel&lt;/project&gt;
 &lt;/Customer&gt;
 </plain-text-body><p>Will print the message:</p><parameter ac:name="language">xml</parameter><plain-text-body>Request: type=gold, active=true, customerData=&lt;Customer.toString() representation&gt;
-</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&#160;<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>&#160;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>&#160;</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&#160;<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&#160;<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>&#160;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&#160;<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>.&#160;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&#160;<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>&#160;and let the&#160;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&#160;<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></div> <div class="conf-macro output-block" data-hasbody="false" data-macro-name="include"><h2 id="BookComponentAppendix-DataSetComponent">DataSet Component</h2><p> </p><div class="conf-macro output-block" data-hasbody="false" data-macro-name="include"><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>.</div><p> </p><p>The DataSet component provides a mechanism to easily perform load &amp; 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 ...]