Author: buildbot Date: Fri May 13 18:21:15 2016 New Revision: 988163 Log: Production update by buildbot for camel
Modified: websites/production/camel/content/book-component-appendix.html websites/production/camel/content/book-in-one-page.html websites/production/camel/content/cache/main.pageCache websites/production/camel/content/servlet.html Modified: websites/production/camel/content/book-component-appendix.html ============================================================================== --- websites/production/camel/content/book-component-appendix.html (original) +++ websites/production/camel/content/book-component-appendix.html Fri May 13 18:21:15 2016 @@ -1017,11 +1017,11 @@ template.send("direct:alias-verify& ]]></script> </div></div><p></p><h3 id="BookComponentAppendix-SeeAlso.8">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><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><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>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 cons ume web services. The bean component's configuration is also simpler and provides the fastest method to implement web services using Camel and CXF.</p></div></div><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p></div></div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1463152671305 {padding: 0px;} -div.rbtoc1463152671305 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1463152671305 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1463163495558 {padding: 0px;} +div.rbtoc1463163495558 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1463163495558 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1463152671305"> +/*]]>*/</style></p><div class="toc-macro rbtoc1463163495558"> <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-CXFComponent">CXF Component</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-URIformat">URI format</a></li><li><a shape="rect" href="#BookComponentAppendix-Options">Options</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-Thedescriptionsofthedataformats">The descriptions of the dataformats</a> @@ -8814,7 +8814,19 @@ int size = seda.getExchanges().size(); </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="BookComponentAppendix-URIformat.59">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[servlet://relative_path[?options] ]]></script> -</div></div><p>You can append query options to the URI in the following format, <code>?option=value&option=value&...</code></p><h3 id="BookComponentAppendix-Options.46">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" cl ass="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="con fluenceTd"><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);"> </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. </span><span style="color: rgb(0,0,0);">From </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="BookComponentAppendix-MessageH eaders.17">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="BookComponentAppendix-Usage.6">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="BookComponentAppendix-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"> +</div></div><p>You can append query options to the URI in the following format, <code>?option=value&option=value&...</code></p><h3 id="BookComponentAppendix-Options.46">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" cl ass="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="con fluenceTd"><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);"> </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. </span><span style="color: rgb(0,0,0);">From </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="BookComponentAppendix-MessageH eaders.17">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="BookComponentAppendix-Usage.6">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="BookComponentAppendix-UsingServlet3.0AsyncMode">Using Servlet 3.0 Async Mode</h3><p><strong>Available as of Camel 2.18</strong></p><p>You can conf igure 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[ <servlet> + <servlet-name>CamelServlet</servlet-name> + <display-name>Camel Http Transport Servlet</display-name> + <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> + <init-param> + <param-name>async</param-name> + <param-value>true</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + <async-supported>true</async-supported> + </servlet>]]></script> +</div></div><p> </p><h3 id="BookComponentAppendix-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[<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> @@ -8860,7 +8872,7 @@ int size = seda.getExchanges().size(); </web-app> ]]></script> -</div></div><p>Then you can define your route as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</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("servlet:hello?matchOnUriPrefix=true").process(new Processor() { public void process(Exchange exchange) throws Exception { @@ -8899,7 +8911,7 @@ from("servlet:hello?matchOnUriPrefi </servlet> <web-app> ]]></script> -</div></div><h4 id="BookComponentAppendix-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><p>Then use this service in your camel route like this:</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p>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/c amel/component/servlet/CamelHttpTransportServlet.java">CamelHttpTransportServlet</a> on the OSGi platform</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p></p><h3 id="BookComponentAppendix-SeeAlso.56">See Also</h3> +</div></div><h4 id="BookComponentAppendix-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/compo nent/servlet/CamelHttpTransportServlet.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="BookComponentAppendix-SeeAlso.56">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> <h2 id="BookComponentAppendix-ShiroSecurityComponent">Shiro Security Component</h2><p><strong>Available as of Camel 2.5</strong></p><p>The <strong>shiro-security</strong> component in Camel is a security focused component, based on the Apache Shiro security project.</p><p>Apache Shiro is a powerful and flexible open-source security framework that cleanly handles authentication, authorization, ente rprise session management and cryptography. The objective of the Apache Shiro project is to provide the most robust and comprehensive application security framework available while also being very easy to understand and extremely simple to use.</p><p>This camel shiro-security component allows authentication and authorization support to be applied to different segments of a camel route.</p><p>Shiro security is applied on a route using a Camel Policy. A Policy in Camel utilizes a strategy pattern for applying interceptors on Camel Processors. It offering the ability to apply cross-cutting concerns (for example. security, transactions etc) on sections/segments of a camel route.</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[<dependency> <groupId>org.apache.camel</groupId> Modified: websites/production/camel/content/book-in-one-page.html ============================================================================== --- websites/production/camel/content/book-in-one-page.html (original) +++ websites/production/camel/content/book-in-one-page.html Fri May 13 18:21:15 2016 @@ -3615,11 +3615,11 @@ The tutorial has been designed in two pa While not actual tutorials you might find working through the source of the various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul> <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</h2><p> </p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Thanks</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This tutorial was kindly donated to Apache Camel by Martin Gilday.</p></div></div><h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the reader through the stages of creating a project which uses Camel to facilitate the routing of messages from a JMS queue to a <a shape="rect" class="external-link" href="http://www.springramework.org" rel="nofollow">Spring</a> service. The route works in a synchronous fashion returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1463152726736 {padding: 0px;} -div.rbtoc1463152726736 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1463152726736 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1463163558441 {padding: 0px;} +div.rbtoc1463163558441 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1463163558441 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1463152726736"> +/*]]>*/</style></p><div class="toc-macro rbtoc1463163558441"> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-About">About</a></li><li><a shape="rect" href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul> </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the Server</a> @@ -5734,11 +5734,11 @@ So we completed the last piece in the pi <p>This example has been removed from <strong>Camel 2.9</strong> onwards. Apache Axis 1.4 is a very old and unsupported framework. We encourage users to use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1463152728191 {padding: 0px;} -div.rbtoc1463152728191 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1463152728191 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1463163560392 {padding: 0px;} +div.rbtoc1463163560392 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1463163560392 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1463152728191"> +/*]]>*/</style><div class="toc-macro rbtoc1463163560392"> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#BookInOnePage-RunningtheExample">Running the Example</a></li></ul> @@ -17135,11 +17135,11 @@ template.send("direct:alias-verify& ]]></script> </div></div><p></p><h3 id="BookInOnePage-SeeAlso.28">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><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="BookInOnePage-CXFComponent">CXF Component</h2><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>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></div></div><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p></div></div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1463152779342 {padding: 0px;} -div.rbtoc1463152779342 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1463152779342 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1463163582079 {padding: 0px;} +div.rbtoc1463163582079 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1463163582079 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1463152779342"> +/*]]>*/</style></p><div class="toc-macro rbtoc1463163582079"> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-CXFComponent">CXF Component</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect" href="#BookInOnePage-Options">Options</a> <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the dataformats</a> @@ -24932,7 +24932,19 @@ int size = seda.getExchanges().size(); </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="BookInOnePage-URIformat.60">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[servlet://relative_path[?options] ]]></script> -</div></div><p>You can append query options to the URI in the following format, <code>?option=value&option=value&...</code></p><h3 id="BookInOnePage-Options.67">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="con fluenceTd"><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="confluenceT d"><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);"> </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. </span><span style="color: rgb(0,0,0);">From </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="BookInOnePage-MessageHeaders.17">Messa ge 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="BookInOnePage-Usage.7">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="BookInOnePage-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"> +</div></div><p>You can append query options to the URI in the following format, <code>?option=value&option=value&...</code></p><h3 id="BookInOnePage-Options.67">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="con fluenceTd"><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="confluenceT d"><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);"> </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. </span><span style="color: rgb(0,0,0);">From </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="BookInOnePage-MessageHeaders.17">Messa ge 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="BookInOnePage-Usage.7">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="BookInOnePage-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-p aram 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[ <servlet> + <servlet-name>CamelServlet</servlet-name> + <display-name>Camel Http Transport Servlet</display-name> + <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> + <init-param> + <param-name>async</param-name> + <param-value>true</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + <async-supported>true</async-supported> + </servlet>]]></script> +</div></div><p> </p><h3 id="BookInOnePage-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[<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> @@ -24978,7 +24990,7 @@ int size = seda.getExchanges().size(); </web-app> ]]></script> -</div></div><p>Then you can define your route as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</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("servlet:hello?matchOnUriPrefix=true").process(new Processor() { public void process(Exchange exchange) throws Exception { @@ -25017,7 +25029,7 @@ from("servlet:hello?matchOnUriPrefi </servlet> <web-app> ]]></script> -</div></div><h4 id="BookInOnePage-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><p>Then use this service in your camel route like this:</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p>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/com ponent/servlet/CamelHttpTransportServlet.java">CamelHttpTransportServlet</a> on the OSGi platform</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p></p><h3 id="BookInOnePage-SeeAlso.76">See Also</h3> +</div></div><h4 id="BookInOnePage-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/ser vlet/CamelHttpTransportServlet.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="BookInOnePage-SeeAlso.76">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> <h2 id="BookInOnePage-ShiroSecurityComponent">Shiro Security Component</h2><p><strong>Available as of Camel 2.5</strong></p><p>The <strong>shiro-security</strong> component in Camel is a security focused component, based on the Apache Shiro security project.</p><p>Apache Shiro is a powerful and flexible open-source security framework that cleanly handles authentication, authorization, enterprise s ession management and cryptography. The objective of the Apache Shiro project is to provide the most robust and comprehensive application security framework available while also being very easy to understand and extremely simple to use.</p><p>This camel shiro-security component allows authentication and authorization support to be applied to different segments of a camel route.</p><p>Shiro security is applied on a route using a Camel Policy. A Policy in Camel utilizes a strategy pattern for applying interceptors on Camel Processors. It offering the ability to apply cross-cutting concerns (for example. security, transactions etc) on sections/segments of a camel route.</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[<dependency> <groupId>org.apache.camel</groupId> Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/servlet.html ============================================================================== --- websites/production/camel/content/servlet.html (original) +++ websites/production/camel/content/servlet.html Fri May 13 18:21:15 2016 @@ -97,7 +97,19 @@ </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&option=value&...</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);"> </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. </span><span style="color: rgb(0,0,0);">From </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-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"> +</div></div><p>You can append query options to the URI in the following format, <code>?option=value&option=value&...</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);"> </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. </span><span style="color: rgb(0,0,0);">From </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[ <servlet> + <servlet-name>CamelServlet</servlet-name> + <display-name>Camel Http Transport Servlet</display-name> + <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> + <init-param> + <param-name>async</param-name> + <param-value>true</param-value> + </init-param> + <load-on-startup>1</load-on-startup> + <async-supported>true</async-supported> + </servlet>]]></script> +</div></div><p> </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[<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> @@ -143,7 +155,7 @@ </web-app> ]]></script> -</div></div><p>Then you can define your route as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</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("servlet:hello?matchOnUriPrefix=true").process(new Processor() { public void process(Exchange exchange) throws Exception { @@ -182,7 +194,7 @@ from("servlet:hello?matchOnUriPrefi </servlet> <web-app> ]]></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><p>Then use this service in your camel route like this:</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p>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/CamelHttpTransportServlet.java">CamelHttpTransportServlet</a> on the OSGi platform</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p></p><h3 id="SERVLET-SeeAlso">See Also</h3> +</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> </td> <td valign="top">