Modified: websites/production/camel/content/rss.html
==============================================================================
--- websites/production/camel/content/rss.html (original)
+++ websites/production/camel/content/rss.html Fri Aug 25 09:20:43 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' 
rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' 
rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: RSS
@@ -86,53 +75,14 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="RSS-RSSComponent">RSS 
Component</h2><p>The <strong>rss:</strong> component is used for polling RSS 
feeds. Camel will default poll the feed every 60th seconds.</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" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+<div class="wiki-content maincontent"><h2 id="RSS-RSSComponent">RSS 
Component</h2><p>The <strong>rss:</strong> component is used for polling RSS 
feeds. Camel will default poll the feed every 60th seconds.</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-rss&lt;/artifactId&gt;
     &lt;version&gt;x.x.x&lt;/version&gt;
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
-]]></script>
-</div></div><p><strong>Note:</strong> The component currently only supports 
polling (consuming) feeds.</p><div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Camel-rss internally uses a <a 
shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/servicemix/smx4/bundles/trunk/rome-1.0/";>patched
 version</a> of <a shape="rect" class="external-link" 
href="http://rometools.github.io/rome/"; rel="nofollow">ROME</a> hosted on 
ServiceMix to solve some OSGi <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/SMX4-510";>class loading 
issues</a>.</p></div></div><h3 id="RSS-URIformat">URI format</h3><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[rss:rssUri
-]]></script>
-</div></div><p>Where <code>rssUri</code> is the URI to the RSS feed to 
poll.</p><p>You can append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="RSS-Options">Options</h3><div class="confluenceTableSmall"><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 
splits a feed into its individual entries and returns each entry, poll by poll. 
For example, if a feed contains seven entries, Camel returns the first entry on 
the first poll, the second entry on the
  second poll, and so on. When no more entries are left in the feed, Camel 
contacts the remote RSS URI to obtain a new feed. If <code>false</code>, Camel 
obtains a fresh feed on every poll and returns all of the feed's 
entries.</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>Use in combination with the <code>splitEntries</code> 
option in order to filter returned entries. By default, Camel applies the 
<code>UpdateDateFilter</code> filter, which returns only new entries from the 
feed, ensuring that the consumer endpoint never receives an entry more than 
once. The filter orders the entries chronologically, with the newest returned 
last.</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 true, only one entry is processed per 
consumer.delay. Only applicable when splitEntries is set to 
true.</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>Use in combination with the 
<code>filter</code> option to block entries earlier than a specific date/time 
(uses the <code>entry.updated</code> timestamp). The 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>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>Spe
 cifies whether to add the ROME <code>SyndFeed</code> 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 specifies whether to sort the 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>60000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Delay in milliseconds between each 
poll.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>consumer.initialDelay</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Milliseconds before polling 
starts.</p></td></tr><tr><td cols
 pan="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" rowspan="1" class="confluenceTd"><p>Set to <code>true</code> to 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><span> For basic 
authentication when polling from a HTTP feed</span></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="con
 fluenceTd"><strong>Camel 2.16:</strong><span> For basic authentication when 
polling from a HTTP feed</span></td></tr></tbody></table></div></div>
-
-
-<h3 id="RSS-Exchangedatatypes">Exchange data types</h3><p>Camel initializes 
the In body on the Exchange with a ROME <code>SyndFeed</code>. Depending on the 
value of the <code>splitEntries</code> flag, Camel returns either a 
<code>SyndFeed</code> with one <code>SyndEntry</code> or a 
<code>java.util.List</code> of <code>SyndEntrys</code>.</p><div 
class="confluenceTableSmall"><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>A single entry from the current feed is set 
in the exchange.</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 current feed is set 
in the exchange.</p></td></tr></tbody></table></div></div>
-
-
-<h3 id="RSS-MessageHeaders">Message Headers</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelRssFeed</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The entire 
<code>SyncFeed</code> object.</p></td></tr></tbody></table></div></div>
-
-
-<h3 id="RSS-RSSDataformat">RSS Dataformat</h3><p>The RSS component ships with 
an RSS dataformat that can be used to convert between String (as XML) and ROME 
RSS model objects.</p><ul><li>marshal = from ROME <code>SyndFeed</code> to XML 
<code>String</code></li><li>unmarshal = from XML <code>String</code> to ROME 
<code>SyndFeed</code></li></ul><p>A route using this would look something like 
this:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-from(&quot;rss:file:src/test/data/rss20.xml?splitEntries=false&amp;consumer.delay=1000&quot;).marshal().rss().to(&quot;mock:marshal&quot;);
-]]></script>
-</div></div>The purpose of this feature is to make it possible to use Camel's 
lovely built-in expressions for manipulating RSS messages. As shown below, an 
XPath expression can be used to filter the RSS message:<div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-// only entries with Camel in the title will get through the filter
-from(&quot;rss:file:src/test/data/rss20.xml?splitEntries=true&amp;consumer.delay=100&quot;)
-    
.marshal().rss().filter().xpath(&quot;//item/title[contains(.,&#39;Camel&#39;)]&quot;).to(&quot;mock:result&quot;);
-]]></script>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><p class="title">Query parameters</p><span 
class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>If the URL for the RSS feed uses 
query parameters, this component will understand them as well, for example if 
the feed uses <code>alt=rss</code>, then you can for example do<br 
clear="none"> <code>from("rss:<a shape="rect" class="external-link" 
href="http://someserver.com/feeds/posts/default?alt=rss&amp;splitEntries=false&amp;consumer.delay=1000";
 
rel="nofollow">http://someserver.com/feeds/posts/default?alt=rss&amp;splitEntries=false&amp;consumer.delay=1000</a>").to("bean:rss");</code></p></div></div><h3
 id="RSS-Filteringentries">Filtering entries</h3><p>You can filter out entries 
quite easily using XPath, as shown in the data format section above. You can 
also exploit Camel's <a shape="rect" href="bean-integratio
 n.html">Bean Integration</a> to implement your own conditions. For instance, a 
filter equivalent to the XPath example above would be:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-// only entries with Camel in the title will get through the filter
-from(&quot;rss:file:src/test/data/rss20.xml?splitEntries=true&amp;consumer.delay=100&quot;).
-        filter().method(&quot;myFilterBean&quot;, 
&quot;titleContainsCamel&quot;).to(&quot;mock:result&quot;);
-]]></script>
-</div></div>The custom bean for this would be:<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-public static class FilterBean {
-    public boolean titleContainsCamel(@Body SyndFeed feed) {
-        SyndEntry firstEntry = (SyndEntry) feed.getEntries().get(0);
-        return firstEntry.getTitle().contains(&quot;Camel&quot;);
-    }
-}
-]]></script>
-</div></div><h3 id="RSS-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><ul 
class="alternate"><li><a shape="rect" href="atom.html">Atom</a></li></ul></div>
+</plain-text-body><p><strong>Note:</strong> The component currently only 
supports polling (consuming) feeds.</p><rich-text-body><p>Camel-rss internally 
uses a <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/servicemix/smx4/bundles/trunk/rome-1.0/";>patched
 version</a> of <a shape="rect" class="external-link" 
href="http://rometools.github.io/rome/"; rel="nofollow">ROME</a> hosted on 
ServiceMix to solve some OSGi <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/SMX4-510";>class loading 
issues</a>.</p></rich-text-body><h3 id="RSS-URIformat">URI 
format</h3><plain-text-body>rss:rssUri
+</plain-text-body><p>Where <code>rssUri</code> is the URI to the RSS feed to 
poll.</p><p>You can append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="RSS-Options">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 
splits a feed into its individual entries and returns each entry, poll by poll. 
For example, if a feed contains seven entries, Camel returns the first e
 ntry on the first poll, the second entry on the second poll, and so on. When 
no more entries are left in the feed, Camel contacts the remote RSS URI to 
obtain a new feed. If <code>false</code>, Camel obtains a fresh feed on every 
poll and returns all of the feed's entries.</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>Use in combination with the 
<code>splitEntries</code> option in order to filter returned entries. By 
default, Camel applies the <code>UpdateDateFilter</code> filter, which returns 
only new entries from the feed, ensuring that the consumer endpoint never 
receives an entry more than once. The filter orders the entries 
chronologically, with the newest returned last.</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 true, only one entry is processed per consumer.delay. Only applicable when 
splitEntries is set to true.</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>Use in combination with the 
<code>filter</code> option to block entries earlier than a specific date/time 
(uses the <code>entry.updated</code> timestamp). The 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>feedHeader</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td cols
 pan="1" rowspan="1" class="confluenceTd"><p>Specifies whether to add the ROME 
<code>SyndFeed</code> 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 specifies whether to sort the 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>60000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Delay in milliseconds between each 
poll.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>consumer.initialDelay</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Milliseconds b
 efore 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" rowspan="1" class="confluenceTd"><p>Set to <code>true</code> to 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><span> For basic 
authentication when polling from a HTTP feed</span></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><h3 
id="RSS-Exchangedatatypes">Exchange data types</h3><p>Camel initializes the In 
body on the Exchange with a ROME <code>SyndFeed</code>. Depending on the value 
of the <code>splitEntries</code> flag, Camel returns either a 
<code>SyndFeed</code> with one <code>SyndEntry</code> or a 
<code>java.util.List</code> of <code>SyndEntrys</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>A single entry from the current 
feed is set in the exchange.</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 current 
feed is set in the 
exchange.</p></td></tr></tbody></table></div></rich-text-body><h3 
id="RSS-MessageHeaders">Message 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>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>CamelRssFeed</code></p></td><td 
colspan="1" rowspan="1" class="con
 fluenceTd"><p>The entire <code>SyncFeed</code> 
object.</p></td></tr></tbody></table></div></rich-text-body><h3 
id="RSS-RSSDataformat">RSS Dataformat</h3><p>The RSS component ships with an 
RSS dataformat that can be used to convert between String (as XML) and ROME RSS 
model objects.</p><ul><li>marshal = from ROME <code>SyndFeed</code> to XML 
<code>String</code></li><li>unmarshal = from XML <code>String</code> to ROME 
<code>SyndFeed</code></li></ul><p>A route using this would look something like 
this:<plain-text-body>{snippet:id=ex|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/dataformat/rss/RssDataFormatTest.java}</plain-text-body>The
 purpose of this feature is to make it possible to use Camel's lovely built-in 
expressions for manipulating RSS messages. As shown below, an XPath expression 
can be used to filter the RSS 
message:<plain-text-body>{snippet:id=ex|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/dataformat/rss/Rss
 FilterWithXPathTest.java}</plain-text-body></p><parameter 
ac:name="title">Query parameters</parameter><rich-text-body><p>If the URL for 
the RSS feed uses query parameters, this component will understand them as 
well, for example if the feed uses <code>alt=rss</code>, then you can for 
example do<br clear="none"> <code>from("rss:<a shape="rect" 
class="external-link" 
href="http://someserver.com/feeds/posts/default?alt=rss&amp;splitEntries=false&amp;consumer.delay=1000";
 
rel="nofollow">http://someserver.com/feeds/posts/default?alt=rss&amp;splitEntries=false&amp;consumer.delay=1000</a>").to("bean:rss");</code></p></rich-text-body><h3
 id="RSS-Filteringentries">Filtering entries</h3><p>You can filter out entries 
quite easily using XPath, as shown in the data format section above. You can 
also exploit Camel's <a shape="rect" href="bean-integration.html">Bean 
Integration</a> to implement your own conditions. For instance, a filter 
equivalent to the XPath example above would be:<plain-text-bod
 
y>{snippet:id=ex1|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/component/rss/RssFilterTest.java}</plain-text-body>The
 custom bean for this would 
be:<plain-text-body>{snippet:id=ex2|lang=java|url=camel/trunk/components/camel-rss/src/test/java/org/apache/camel/component/rss/RssFilterTest.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="atom.html">Atom</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/servlet.html
==============================================================================
--- websites/production/camel/content/servlet.html (original)
+++ websites/production/camel/content/servlet.html Fri Aug 25 09:20:43 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' 
rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' 
rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: SERVLET
@@ -86,22 +75,14 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 
id="SERVLET-ServletComponent">Servlet Component</h2><p>The 
<strong>servlet:</strong> component provides HTTP based <a shape="rect" 
href="endpoint.html">endpoints</a> for consuming HTTP requests that arrive at a 
HTTP endpoint that is bound to a published Servlet.</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" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+<div class="wiki-content maincontent"><h2 
id="SERVLET-ServletComponent">Servlet Component</h2><p>The 
<strong>servlet:</strong> component provides HTTP based <a shape="rect" 
href="endpoint.html">endpoints</a> for consuming HTTP requests that arrive at a 
HTTP endpoint that is bound to a published Servlet.</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-servlet&lt;/artifactId&gt;
     &lt;version&gt;x.x.x&lt;/version&gt;
     &lt;\!-\- use the same version as your Camel core version \--&gt;
 &lt;/dependency&gt;
-]]></script>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Stream</p><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Servlet is stream based, which 
means the input it receives is submitted to Camel as a stream. That means you 
will only be able to read the content of the stream <strong>once</strong>. If 
you find a situation where the message body appears to be empty or you need to 
access the data multiple times (eg: doing multicasting, or redelivery error 
handling) you should use <a shape="rect" href="stream-caching.html">Stream 
caching</a> or convert the message body to a <code>String</code> which is safe 
to be read multiple times.</p></div></div><h3 id="SERVLET-URIformat">URI 
format</h3><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[servlet://relative_path[?options]
-]]></script>
-</div></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="SERVLET-Options">Options</h3><div class="confluenceTableSmall"><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>httpBindingRef</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Reference to an 
<code>org.apache.camel.component.http.HttpBinding</code> in the <a shape="rect" 
href="registry.html">Registry</a>. A <code>HttpBinding</code> implementation 
can be used to customize how to write a response.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd
 "><code><span>httpBinding</span></code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>null</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.16:</strong> <span>Reference to an 
</span><code>org.apache.camel.component.http.HttpBinding</code><span> in the 
</span><a shape="rect" href="registry.html">Registry</a><span>. A 
</span><code>HttpBinding</code><span> implementation can be used to customize 
how to write a response.</span></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>matchOnUriPrefix</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Whether or not the 
<code>CamelServlet</code> should try to find a target consumer by matching the 
URI prefix, if no exact match is found.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>servletName</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><co
 de>CamelServlet</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Specifies the servlet name that the servlet endpoint 
will bind to. This name should match the name you define in 
<code>web.xml</code> file.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code><span style="color: 
rgb(0,0,0);">httpMethodRestrict</span></code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>null</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.11:</strong><span 
style="color: rgb(0,0,0);">&#160;</span><strong>Consumer only</strong><span 
style="color: rgb(0,0,0);">: Used to only allow consuming if the HttpMethod 
matches, such as GET/POST/PUT etc.&#160;</span><span style="color: 
rgb(0,0,0);">From&#160;</span><strong>Camel 2.15 </strong><span style="color: 
rgb(0,0,0);">onwards multiple methods can be specified separated by 
comma.</span></td></tr></tbody></table></div></div>
-
-
-<h3 id="SERVLET-MessageHeaders">Message Headers</h3><p>Camel will apply the 
same Message Headers as the <a shape="rect" href="http.html">HTTP</a> 
component.</p><p>Camel will also populate <strong>all</strong> 
<code>request.parameter</code> and <code>request.headers</code>. For example, 
if a client request has the URL, <code><a shape="rect" class="external-link" 
href="http://myserver/myserver?orderid=123"; 
rel="nofollow">http://myserver/myserver?orderid=123</a></code>, the exchange 
will contain a header named <code>orderid</code> with the value 123.</p><h3 
id="SERVLET-Usage">Usage</h3><p>You can consume only from endpoints generated 
by the Servlet component. Therefore, it should be used only as input into your 
Camel routes. To issue HTTP requests against other HTTP endpoints, use the <a 
shape="rect" href="http.html">HTTP Component</a></p><h3 
id="SERVLET-UsingServlet3.0AsyncMode">Using Servlet 3.0 Async 
Mode</h3><p><strong>Available as of Camel 2.18</strong></p><p>You can configure 
the
  servlet with an init-param to turn on async mode when using a Servlet 3.x 
container. There is a sample XML configuration below:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ &lt;servlet&gt;
+</plain-text-body><parameter 
ac:name="title">Stream</parameter><rich-text-body><p>Servlet is stream based, 
which means the input it receives is submitted to Camel as a stream. That means 
you will only be able to read the content of the stream <strong>once</strong>. 
If you find a situation where the message body appears to be empty or you need 
to access the data multiple times (eg: doing multicasting, or redelivery error 
handling) you should use <a shape="rect" href="stream-caching.html">Stream 
caching</a> or convert the message body to a <code>String</code> which is safe 
to be read multiple times.</p></rich-text-body><h3 id="SERVLET-URIformat">URI 
format</h3><plain-text-body>servlet://relative_path[?options]
+</plain-text-body><p>You can append query options to the URI in the following 
format, <code>?option=value&amp;option=value&amp;...</code></p><h3 
id="SERVLET-Options">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>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>httpBindingRef</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Reference to an 
<code>org.apache.camel.component.http.HttpBinding</code> in the <a shape="rect" 
href="registry.html">Registry</a>. A <code>HttpBinding</code> implementation 
can be used to customize how to write a response.</p></td></tr><tr>
 <td colspan="1" rowspan="1" 
class="confluenceTd"><code><span>httpBinding</span></code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>null</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> <span>Reference 
to an </span><code>org.apache.camel.component.http.HttpBinding</code><span> in 
the </span><a shape="rect" href="registry.html">Registry</a><span>. A 
</span><code>HttpBinding</code><span> implementation can be used to customize 
how to write a response.</span></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>matchOnUriPrefix</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Whether or not the 
<code>CamelServlet</code> should try to find a target consumer by matching the 
URI prefix, if no exact match is found.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>servletName</code></p></td><td cols
 pan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelServlet</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Specifies the servlet name that the servlet 
endpoint will bind to. This name should match the name you define in 
<code>web.xml</code> file.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code><span style="color: 
rgb(0,0,0);">httpMethodRestrict</span></code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>null</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.11:</strong><span 
style="color: rgb(0,0,0);">&#160;</span><strong>Consumer only</strong><span 
style="color: rgb(0,0,0);">: Used to only allow consuming if the HttpMethod 
matches, such as GET/POST/PUT etc.&#160;</span><span style="color: 
rgb(0,0,0);">From&#160;</span><strong>Camel 2.15 </strong><span style="color: 
rgb(0,0,0);">onwards multiple methods can be specified separated by 
comma.</span></td></tr></tbody></table></div></rich-text-bo
 dy><h3 id="SERVLET-MessageHeaders">Message Headers</h3><p>Camel will apply the 
same Message Headers as the <a shape="rect" href="http.html">HTTP</a> 
component.</p><p>Camel will also populate <strong>all</strong> 
<code>request.parameter</code> and <code>request.headers</code>. For example, 
if a client request has the URL, <code><a shape="rect" class="external-link" 
href="http://myserver/myserver?orderid=123"; 
rel="nofollow">http://myserver/myserver?orderid=123</a></code>, the exchange 
will contain a header named <code>orderid</code> with the value 123.</p><h3 
id="SERVLET-Usage">Usage</h3><p>You can consume only from endpoints generated 
by the Servlet component. Therefore, it should be used only as input into your 
Camel routes. To issue HTTP requests against other HTTP endpoints, use the <a 
shape="rect" href="http.html">HTTP Component</a></p><h3 
id="SERVLET-UsingServlet3.0AsyncMode">Using Servlet 3.0 Async 
Mode</h3><p><strong>Available as of Camel 2.18</strong></p><p>You can configure 
 the servlet with an init-param to turn on async mode when using a Servlet 3.x 
container. There is a sample XML configuration below:</p><parameter 
ac:name="">xml</parameter><plain-text-body> &lt;servlet&gt;
     &lt;servlet-name&gt;CamelServlet&lt;/servlet-name&gt;
     &lt;display-name&gt;Camel Http Transport Servlet&lt;/display-name&gt;
     
&lt;servlet-class&gt;org.apache.camel.component.servlet.CamelHttpTransportServlet&lt;/servlet-class&gt;
@@ -111,9 +92,7 @@
     &lt;/init-param&gt;
     &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
     &lt;async-supported&gt;true&lt;/async-supported&gt;
-  &lt;/servlet&gt;]]></script>
-</div></div><p>&#160;</p><h3 
id="SERVLET-PuttingCamelJARsintheappserverbootclasspath">Putting Camel JARs in 
the app server boot classpath</h3><p>If you put the Camel JARs such as 
<code>camel-core</code>, <code>camel-servlet</code>, etc. in the boot classpath 
of your application server (eg usually in its lib directory), then mind that 
the servlet mapping list is now shared between multiple deployed Camel 
application in the app server.</p><p>Mind that putting Camel JARs in the boot 
classpath of the application server is generally not best practice!</p><p>So in 
those situations you <strong>must</strong> define a custom and unique servlet 
name in each of your Camel application, eg in the <code>web.xml</code> 
define:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;servlet&gt;
+  &lt;/servlet&gt;</plain-text-body><p>&#160;</p><h3 
id="SERVLET-PuttingCamelJARsintheappserverbootclasspath">Putting Camel JARs in 
the app server boot classpath</h3><p>If you put the Camel JARs such as 
<code>camel-core</code>, <code>camel-servlet</code>, etc. in the boot classpath 
of your application server (eg usually in its lib directory), then mind that 
the servlet mapping list is now shared between multiple deployed Camel 
application in the app server.</p><p>Mind that putting Camel JARs in the boot 
classpath of the application server is generally not best practice!</p><p>So in 
those situations you <strong>must</strong> define a custom and unique servlet 
name in each of your Camel application, eg in the <code>web.xml</code> 
define:</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;servlet&gt;
   &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt;
   
&lt;servlet-class&gt;org.apache.camel.component.servlet.CamelHttpTransportServlet&lt;/servlet-class&gt;
   &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
@@ -123,15 +102,11 @@
   &lt;servlet-name&gt;MyServlet&lt;/servlet-name&gt;
   &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
 &lt;/servlet-mapping&gt;
-]]></script>
-</div></div><p>And in your Camel endpoints then include the servlet name as 
well</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;route&gt;
-  &lt;from uri=&quot;servlet://foo?servletName=MyServlet&quot;/&gt;
+</plain-text-body><p>And in your Camel endpoints then include the servlet name 
as well</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;route&gt;
+  &lt;from uri="servlet://foo?servletName=MyServlet"/&gt;
   ...
 &lt;/route&gt;
-]]></script>
-</div></div><p>From <strong>Camel 2.11</strong> onwards Camel will detect this 
duplicate and fail to start the application. You can control to ignore this 
duplicate by setting the servlet init-parameter ignoreDuplicateServletName to 
true as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[  &lt;servlet&gt;
+</plain-text-body><p>From <strong>Camel 2.11</strong> onwards Camel will 
detect this duplicate and fail to start the application. You can control to 
ignore this duplicate by setting the servlet init-parameter 
ignoreDuplicateServletName to true as follows:</p><parameter 
ac:name="">xml</parameter><plain-text-body>  &lt;servlet&gt;
     &lt;servlet-name&gt;CamelServlet&lt;/servlet-name&gt;
     &lt;display-name&gt;Camel Http Transport Servlet&lt;/display-name&gt;
     
&lt;servlet-class&gt;org.apache.camel.component.servlet.CamelHttpTransportServlet&lt;/servlet-class&gt;
@@ -140,46 +115,7 @@
       &lt;param-value&gt;true&lt;/param-value&gt;
     &lt;/init-param&gt;
   &lt;/servlet&gt;
-]]></script>
-</div></div><p>But its <strong>strongly advised</strong> to use unique 
servlet-name for each Camel application to avoid this duplication clash, as 
well any unforeseen side-effects.</p><h3 id="SERVLET-Sample">Sample</h3><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>From Camel 2.7 onwards it's easier 
to use <a shape="rect" href="servlet.html">Servlet</a> in Spring web 
applications. See <a shape="rect" href="servlet-tomcat-example.html">Servlet 
Tomcat Example</a> for details.</p></div></div><p>In this sample, we define a 
route that exposes a HTTP service at <code><a shape="rect" 
class="external-link" href="http://localhost:8080/camel/services/hello"; 
rel="nofollow">http://localhost:8080/camel/services/hello</a></code>.<br 
clear="none"> First, you need to publish the <a shape="rect" 
class="external-link" hr
 
ef="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 through the normal Web Container, or OSGi Service.<br clear="none"> Use the 
<code>Web.xml</code> file to publish the <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;web-app&gt;
-
-  &lt;servlet&gt;
-    &lt;servlet-name&gt;CamelServlet&lt;/servlet-name&gt;
-    &lt;display-name&gt;Camel Http Transport Servlet&lt;/display-name&gt;
-    
&lt;servlet-class&gt;org.apache.camel.component.servlet.CamelHttpTransportServlet&lt;/servlet-class&gt;
-  &lt;/servlet&gt;
-
-  &lt;servlet-mapping&gt;
-    &lt;servlet-name&gt;CamelServlet&lt;/servlet-name&gt;
-    &lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;
-  &lt;/servlet-mapping&gt;
-
-&lt;/web-app&gt;
-]]></script>
-</div></div>Then you can define your route as follows:<div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-from(&quot;servlet:hello?matchOnUriPrefix=true&quot;).process(new Processor() {
-    public void process(Exchange exchange) throws Exception {
-        String contentType = exchange.getIn().getHeader(Exchange.CONTENT_TYPE, 
String.class);
-        String path = exchange.getIn().getHeader(Exchange.HTTP_URI, 
String.class);
-        path = path.substring(path.lastIndexOf(&quot;/&quot;));
-
-        assertEquals(&quot;Get a wrong content type&quot;, CONTENT_TYPE, 
contentType);
-        // assert camel http header
-        String charsetEncoding = 
exchange.getIn().getHeader(Exchange.HTTP_CHARACTER_ENCODING, String.class);
-        assertEquals(&quot;Get a wrong charset name from the message 
heaer&quot;, &quot;UTF-8&quot;, charsetEncoding);
-        // assert exchange charset
-        assertEquals(&quot;Get a wrong charset naem from the exchange 
property&quot;, &quot;UTF-8&quot;, exchange.getProperty(Exchange.CHARSET_NAME));
-        exchange.getOut().setHeader(Exchange.CONTENT_TYPE, contentType + 
&quot;; charset=UTF-8&quot;);
-        exchange.getOut().setHeader(&quot;PATH&quot;, path);
-        exchange.getOut().setBody(&quot;&lt;b&gt;Hello World&lt;/b&gt;&quot;);
-    }
-});
-]]></script>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-note"><p class="title">Specify the relative path 
for camel-servlet endpoint</p><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Since we are binding the Http 
transport with a published servlet, and we don't know the servlet's application 
context path, the <code>camel-servlet</code> endpoint uses the relative path to 
specify the endpoint's URL. A client can access the <code>camel-servlet</code> 
endpoint through the servlet publish address: 
<code>("http://localhost:8080/camel/services";) + 
RELATIVE_PATH("/hello")</code>.</p></div></div><h4 
id="SERVLET-SamplewhenusingSpring3.x">Sample when using Spring 3.x</h4><p>See 
<a shape="rect" href="servlet-tomcat-example.html">Servlet Tomcat 
Example</a></p><h4 id="SERVLET-SamplewhenusingSpring2.x">Sample when using 
Spring 2.x</h4><p>When using the Servlet component i
 n a Camel/Spring application it's often required to load the Spring 
ApplicationContext <em>after</em> the Servlet component has started. This can 
be accomplished by using Spring's <code>ContextLoaderServlet</code> instead of 
<code>ContextLoaderListener</code>. In that case you'll need to start 
<code>ContextLoaderServlet</code> after <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 like this:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
+</plain-text-body><p>But its <strong>strongly advised</strong> to use unique 
servlet-name for each Camel application to avoid this duplication clash, as 
well any unforeseen side-effects.</p><h3 
id="SERVLET-Sample">Sample</h3><rich-text-body><p>From Camel 2.7 onwards it's 
easier to use <a shape="rect" href="servlet.html">Servlet</a> in Spring web 
applications. See <a shape="rect" href="servlet-tomcat-example.html">Servlet 
Tomcat Example</a> for details.</p></rich-text-body><p>In this sample, we 
define a route that exposes a HTTP service at <code><a shape="rect" 
class="external-link" href="http://localhost:8080/camel/services/hello"; 
rel="nofollow">http://localhost:8080/camel/services/hello</a></code>.<br 
clear="none"> First, you need to publish the <a shape="rect" 
class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 through the norm
 al Web Container, or OSGi Service.<br clear="none"> Use the 
<code>Web.xml</code> file to publish the <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 as 
follows:<plain-text-body>{snippet:id=web|lang=xml|url=camel/trunk/components/camel-servlet/src/test/resources/org/apache/camel/component/servlet/web.xml}</plain-text-body>Then
 you can define your route as 
follows:<plain-text-body>{snippet:id=route|lang=java|url=camel/trunk/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/HttpClientRouteTest.java}</plain-text-body></p><parameter
 ac:name="title">Specify the relative path for camel-servlet 
endpoint</parameter><rich-text-body><p>Since we are binding the Http transport 
with a published servlet, and we don't know the servlet's application context 
path, the <code>camel-servlet</code> endpoint 
 uses the relative path to specify the endpoint's URL. A client can access the 
<code>camel-servlet</code> endpoint through the servlet publish address: 
<code>("http://localhost:8080/camel/services";) + 
RELATIVE_PATH("/hello")</code>.</p></rich-text-body><h4 
id="SERVLET-SamplewhenusingSpring3.x">Sample when using Spring 3.x</h4><p>See 
<a shape="rect" href="servlet-tomcat-example.html">Servlet Tomcat 
Example</a></p><h4 id="SERVLET-SamplewhenusingSpring2.x">Sample when using 
Spring 2.x</h4><p>When using the Servlet component in a Camel/Spring 
application it's often required to load the Spring ApplicationContext 
<em>after</em> the Servlet component has started. This can be accomplished by 
using Spring's <code>ContextLoaderServlet</code> instead of 
<code>ContextLoaderListener</code>. In that case you'll need to start 
<code>ContextLoaderServlet</code> after <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apac
 
he/camel/component/servlet/CamelHttpTransportServlet.java">CamelHttpTransportServlet</a>
 like this:</p><parameter ac:name="">xml</parameter><plain-text-body> 
 &lt;web-app&gt;
   &lt;servlet&gt; 
         &lt;servlet-name&gt;CamelServlet&lt;/servlet-name&gt; 
@@ -196,9 +132,7 @@ from(&quot;servlet:hello?matchOnUriPrefi
         &lt;load-on-startup&gt;2&lt;/load-on-startup&gt; 
   &lt;/servlet&gt; 
 &lt;web-app&gt;
-]]></script>
-</div></div><h4 id="SERVLET-SamplewhenusingOSGi">Sample when using 
OSGi</h4><p>From <strong>Camel 2.6.0</strong>, you can publish the <a 
shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 as an OSGi service with help of SpringDM like this.</p><div 
class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>Then use 
this service in your camel route like this:<div class="error"><span 
class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>For 
versions prior to Camel 2.6 you can use an <code>Activator</code> to publish 
the <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/C
 amelHttpTransportServlet.java">CamelHttpTransportServlet</a> on the OSGi 
platform<div class="error"><span class="error">Error formatting macro: snippet: 
java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><h3 
id="SERVLET-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><ul 
class="alternate"><li><a shape="rect" 
href="servlet-tomcat-example.html">Servlet Tomcat Example</a></li><li><a 
shape="rect" href="servlet-tomcat-no-spring-example.html">Servlet Tomcat No 
Spring Example</a></li><li><a shape="rect" href="http.html">HTTP</a></li><li><a 
shape="rect" href="jetty.html">Jetty</a></li></ul></div>
+</plain-text-body><h4 id="SERVLET-SamplewhenusingOSGi">Sample when using 
OSGi</h4><p>From <strong>Camel 2.6.0</strong>, you can publish the <a 
shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java";>CamelHttpTransportServlet</a>
 as an OSGi service with help of SpringDM like 
this.<plain-text-body>{snippet:id=service|lang=xml|url=camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/servlet/ServletServiceContext.xml}</plain-text-body>Then
 use this service in your camel route like 
this:<plain-text-body>{snippet:id=camelContext|lang=xml|url=camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/servlet/CamelServletWithServletServiceContext.xml}</plain-text-body>For
 versions prior to Camel 2.6 you can use an <code>Activator</code> to publish 
the <a shape="rect" class="external-link" href="http://svn.a
 
pache.org/repos/asf/camel/trunk/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/CamelHttpTransportServlet.java">CamelHttpTransportServlet</a>
 on the OSGi 
platform<plain-text-body>{snippet:id=activator|lang=java|url=camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/servlet/support/ServletActivator.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="servlet-tomcat-example.html">Servlet Tomcat Example</a></li><li><a 
shape="rect" href="servlet-tomcat-no-spring-example.html">Servlet Tomcat No 
Spring Example</a></li><li><a shape="rect" href="http.html">HTTP</a></li><li><a 
shape="rect" href="jetty.html">Jetty</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">


Reply via email to