You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2017/01/25 16:19:49 UTC

svn commit: r1005583 [1/2] - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache jetty.html

Author: buildbot
Date: Wed Jan 25 16:19:48 2017
New Revision: 1005583

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/jetty.html

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Wed Jan 25 16:19:48 2017
@@ -621,8 +621,8 @@ cometds://localhost:8443/service/mychann
  <div class="confluence-information-macro-body">
   <p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p>
  </div>
-</div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/ div.rbtoc1485127221684 {padding: 0px;} div.rbtoc1485127221684 ul {list-style: disc;margin-left: 0px;} div.rbtoc1485127221684 li {margin-left: 0px;padding-left: 0px;} /**/</style>
- </p><div class="toc-macro rbtoc1485127221684"> 
+</div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/ div.rbtoc1485361069348 {padding: 0px;} div.rbtoc1485361069348 ul {list-style: disc;margin-left: 0px;} div.rbtoc1485361069348 li {margin-left: 0px;padding-left: 0px;} /**/</style>
+ </p><div class="toc-macro rbtoc1485361069348"> 
   <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> 
@@ -2923,7 +2923,7 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><p>Where the processor implementation can access the <strong><code>HttpSession</code></strong> as follows:</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">public void process(Exchange exchange) throws Exception { HttpSession session = exchange.getIn(HttpMessage.class).getRequest().getSession(); ... } </script> 
+  <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter">public void process(Exchange exchange) throws Exception { HttpSession session = exchange.getIn(HttpMessage.class).getRequest().getSession(); // ... } </script> 
  </div>
 </div><h3 id="BookComponentAppendix-SSLSupport(HTTPS)">SSL Support (HTTPS)</h3><h5 id="BookComponentAppendix-UsingtheJSSEConfigurationUtility.3">Using the JSSE Configuration Utility</h5><p>From <strong>Camel 2.8</strong>: the&#160;<strong><code>camel-jetty</code></strong> component supports SSL/TLS configuration through the <a shape="rect" href="camel-configuration-utilities.html">Camel JSSE Configuration Utility</a>.&#160; This utility greatly decreases the amount of component specific code you need to write and is configurable at the endpoint and component levels.&#160; The following examples demonstrate how to use the utility with the Jetty component.</p><h6 id="BookComponentAppendix-Programmaticconfigurationofthecomponent.1">Programmatic configuration of the component</h6><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -2931,31 +2931,35 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><h6 id="BookComponentAppendix-SpringDSLbasedconfigurationofendpoint.2">Spring DSL based configuration of endpoint</h6><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
-  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">... &amp;lt;camel:sslContextParameters id=&amp;quot;sslContextParameters&amp;quot;&amp;gt; &amp;lt;camel:keyManagers keyPassword=&amp;quot;keyPassword&amp;quot;&amp;gt; &amp;lt;camel:keyStore resource=&amp;quot;/users/home/server/keystore.jks&amp;quot; password=&amp;quot;keystorePassword&amp;quot;/&amp;gt; &amp;lt;/camel:keyManagers&amp;gt; &amp;lt;/camel:sslContextParameters&amp;gt;... ... &amp;lt;to uri=&amp;quot;jetty:https://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters&amp;quot;/&amp;gt; ... </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;camel:sslContextParameters id=&amp;quot;sslContextParameters&amp;quot;&amp;gt; &amp;lt;camel:keyManagers keyPassword=&amp;quot;keyPassword&amp;quot;&amp;gt; &amp;lt;camel:keyStore resource=&amp;quot;/users/home/server/keystore.jks&amp;quot; password=&amp;quot;keystorePassword&amp;quot;/&amp;gt; &amp;lt;/camel:keyManagers&amp;gt; &amp;lt;/camel:sslContextParameters&amp;gt; &amp;lt;to uri=&amp;quot;jetty:https://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters&amp;quot;/&amp;gt; </script> 
  </div>
 </div><h5 id="BookComponentAppendix-ConfiguringJettyDirectly">Configuring Jetty Directly</h5><p>Jetty provides SSL support out of the box. To enable Jetty to run in SSL mode, simply format the URI using the <strong><code>https://</code></strong> prefix.</p><p><strong>Example</strong>:</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">&amp;lt;from uri=&amp;quot;jetty:https://0.0.0.0/myapp/myservice/&amp;quot;/&amp;gt; </script> 
  </div>
-</div><p>Jetty also needs to know where to load your keystore from and what passwords to use in order to load the correct SSL certificate. Set the following JVM System Properties:</p><p><strong>Before Camel 2.3</strong>:</p><div class="table-wrap">
- <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Property</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>jetty.ssl.keystore</code></td><td colspan="1" rowspan="1" class="confluenceTd">Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>jetty.ssl.password</code></td><td colspan="1" rowspan="1" class="confluenceTd">The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same password that is supplied to the <strong><code>keystore</code></s
 trong> command's <strong><code>-storepass</code></strong> option).</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>jetty.ssl.keypassword</code></td><td colspan="1" rowspan="1" class="confluenceTd">The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the <strong><code>keystore</code></strong> command's <strong><code>-keypass</code></strong> option).</td></tr></tbody></table>
-</div><p>&#160;</p><p><strong>From Camel 2.3</strong>:</p><div class="table-wrap">
- <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Property</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>org.eclipse.jetty.ssl.keystore</code></td><td colspan="1" rowspan="1" class="confluenceTd">Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>org.eclipse.jetty.ssl.password</code></td><td colspan="1" rowspan="1" class="confluenceTd">The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same password that is supplied to the&#160;<st
 rong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>org.eclipse.jetty.ssl.keypassword</code></td><td colspan="1" rowspan="1" class="confluenceTd">The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the&#160;<strong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</td></tr></tbody></table>
-</div><p>For details of how to configure SSL on a Jetty endpoint, read the following <a shape="rect" class="external-link" href="http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html" rel="nofollow">Jetty documentation</a>.</p><p>Some SSL properties aren't exposed directly by Camel. However, Camel does expose the underlying <strong><code>SslSocketConnector</code></strong>, which will allow you to set properties like&#160;<strong><code>needClientAuth</code></strong> for mutual authentication requiring a client certificate or&#160;<strong><code>wantClientAuth</code></strong> for mutual authentication where a client doesn't need a certificate but can have one.</p><p>There's a slight difference between the various Camel versions:</p><p><strong>Up to Camel 2.2</strong></p><div class="code panel pdl" style="border-width: 1px;">
+</div><p>Jetty also needs to know where to load your keystore from and what passwords to use in order to load the correct SSL certificate. Set the following JVM System Properties:</p><p><strong>Before Camel 2.3</strong>:</p><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>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>jetty.ssl.keystore</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>jetty.ssl.password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same password that is supplied 
 to the <strong><code>keystore</code></strong> command's <strong><code>-storepass</code></strong> option).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>jetty.ssl.keypassword</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the <strong><code>keystore</code></strong> command's <strong><code>-keypass</code></strong> option).</p></td></tr></tbody></table> 
+ </div>
+</div><p>&#160;</p><p><strong>From Camel 2.3</strong>:</p><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>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.eclipse.jetty.ssl.keystore</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.eclipse.jetty.ssl.password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same pa
 ssword that is supplied to the&#160;<strong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.eclipse.jetty.ssl.keypassword</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the&#160;<strong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</p></td></tr></tbody></table> 
+ </div>
+</div><p>For details of how to configure SSL on a Jetty endpoint, read the following <a shape="rect" class="external-link" href="http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html" rel="nofollow">Jetty documentation</a>. Some SSL properties aren't exposed directly by Camel. However, Camel does expose the underlying <strong><code>SslSocketConnector</code></strong>, which will allow you to set properties like&#160;<strong><code>needClientAuth</code></strong> for mutual authentication requiring a client certificate or&#160;<strong><code>wantClientAuth</code></strong> for mutual authentication where a client doesn't need a certificate but can have one.</p><p>There's a slight difference between the various Camel versions:</p><p><strong>Up to Camel 2.2</strong></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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.mortbay.jetty.security.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &a
 mp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.mortbay.jetty.security.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &a
 mp;lt;/bean&amp;gt;</script> 
  </div>
 </div><p><strong>Camel 2.3, 2.4</strong></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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; 
 &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; 
 &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><p>From <strong>Camel 2.5</strong>: we switch to use&#160;<strong><code>SslSelectChannelConnector *</code></strong></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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSelectChannelConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&a
 mp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSelectChannelConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&a
 mp;gt; &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><p>The value you use as keys in the above map is the port you configure Jetty to listen on.</p><h4 id="BookComponentAppendix-ConfiguringGeneralSSLProperties">Configuring General SSL Properties</h4><p>From<strong> Camel 2.5</strong>: instead of a per port number specific SSL socket connector (as shown above) you can now configure general properties which applies for all SSL socket connectors (which is not explicit configured as above with the port number as entry).</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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><h4 id="BookComponentAppendix-HowtoObtainAReferencetotheX509Certificate">How to Obtain A Reference to the&#160;<code>X509Certificate</code></h4><p>Jetty stores a reference to the certificate in the&#160;<strong><code>HttpServletRequest</code></strong> which you can access from code as follows:</p><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -2963,7 +2967,7 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><h4 id="BookComponentAppendix-ConfiguringGeneralHTTPProperties">Configuring General HTTP Properties</h4><p>From<strong> Camel 2.5</strong>: instead of a per port number specific HTTP socket connector (as shown above) you can now configure general properties which applies for all HTTP socket connectors (which is not explicit configured as above with the port number as entry).</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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;socketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;acceptors&amp;quot; value=&amp;quot;4&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;maxIdleTime&amp;quot; value=&amp;quot;300000&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;socketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;acceptors&amp;quot; value=&amp;quot;4&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;maxIdleTime&amp;quot; value=&amp;quot;300000&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><h4 id="BookComponentAppendix-HowtoGettheValueofTheX-Forwarded-ForHTTPHeaderUsingHttpServletRequest.getRemoteAddr()">How to Get the Value of The <code>X-Forwarded-For</code> HTTP Header Using <code>HttpServletRequest.getRemoteAddr()</code></h4><p>If the HTTP requests are handled by an Apache server and forwarded to Jetty with <strong><code>mod_proxy</code></strong>, the original client IP address is in the&#160;<strong><code>X-Forwarded-For</code></strong> header and the&#160;<strong><code>HttpServletRequest.getRemoteAddr()</code></strong> will return the address of the Apache proxy.</p><p>Jetty has a forwarded property which takes the value from&#160;<strong><code>X-Forwarded-For</code></strong> and places it in the&#160;<strong><code>HttpServletRequest remoteAddr</code></strong> property.&#160; This property is not available directly through the endpoint configuration but it can be easily added using the&#160;<strong><code>socketConnectors</code></strong> property:</p><div c
 lass="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -2980,7 +2984,7 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><p>And then we can reference this binding when we define the route:</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">&amp;lt;route&amp;gt;&amp;lt;from uri=&amp;quot;jetty:http://0.0.0.0:8080/myapp/myservice?httpBindingRef=mybinding&amp;quot;/&amp;gt;&amp;lt;to uri=&amp;quot;bean:doSomething&amp;quot;/&amp;gt;&amp;lt;/route&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;route&amp;gt; &amp;lt;from uri=&amp;quot;jetty:http://0.0.0.0:8080/myapp/myservice?httpBindingRef=mybinding&amp;quot;/&amp;gt; &amp;lt;to uri=&amp;quot;bean:doSomething&amp;quot;/&amp;gt; &amp;lt;/route&amp;gt; </script> 
  </div>
 </div><h3 id="BookComponentAppendix-JettyHandlersandSecurityConfiguration">Jetty Handlers and Security Configuration</h3><p>You can configure a list of Jetty handlers on the endpoint, which can be useful for enabling advanced Jetty security features. These handlers are configured in Spring XML as follows:</p><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -2994,14 +2998,19 @@ cometds://localhost:8443/service/mychann
  <div class="codeContent panelContent pdl"> 
   <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter">from(&amp;quot;jetty:http://0.0.0.0:9080/myservice?handlers=securityHandler&amp;quot;) </script> 
  </div>
-</div><p>If you need more handlers, set the <strong><code>handlers</code></strong> option equal to a comma-separated list of bean IDs.</p><h3 id="BookComponentAppendix-HowtoReturnaCustomHTTP500ReplyMessage">How to Return a Custom HTTP 500 Reply Message</h3><p>You may want to return a custom reply message when something goes wrong, instead of the default reply message Camel <a shape="rect" href="jetty.html">Jetty</a> replies with. You could use a custom <strong><code>HttpBinding</code></strong> to be in control of the message mapping, but often it may be easier to use Camel's <a shape="rect" href="exception-clause.html">Exception Clause</a> to construct the custom reply message.</p><p>Example: return the message: <strong><code>Dude something went wrong</code></strong> for the HTTP error code <strong><code>500</code></strong>:
+</div><p>If you need more handlers, set the <strong><code>handlers</code></strong> option equal to a comma-separated list of bean IDs.</p><h3 id="BookComponentAppendix-HowtoCustomizetheResponseonanHTTP500ServerError">How to Customize the Response on an <code>HTTP 500</code> Server Error</h3><p>You may want to return a custom reply message when something goes wrong, instead of the default reply message Camel <a shape="rect" href="jetty.html">Jetty</a> replies with. You could use a custom <strong><code>HttpBinding</code></strong> to be in control of the message mapping, but often it may be easier to use Camel's <a shape="rect" href="exception-clause.html">Exception Clause</a> to construct the custom reply message.</p><p>Example: return the message: <strong><code>Dude something went wrong</code></strong> for the HTTP error code <strong><code>500</code></strong>:
  </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"> from(&amp;quot;jetty://http://localhost:{{port}}/myserver&amp;quot;) // use onException to catch all exceptions and return a custom reply message .onException(Exception.class) .handled(true) // create a custom failure response .transform(constant(&amp;quot;Dude something went wrong&amp;quot;)) // we must remember to set error code 500 as handled(true) // otherwise would let Camel thing its a OK response (200) .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500)) .end() // now just force an exception immediately .throwException(new IllegalArgumentException(&amp;quot;I cannot do this&amp;quot;)); </script> 
   </div>
- </div><h3 id="BookComponentAppendix-Multi-PartFormsupport">Multi-Part Form support</h3><p>From <strong>Camel 2.3.0</strong>: <strong><code>camel-jetty</code></strong> support to multi-part form post out of box. The submitted form-data are mapped into the message header.&#160;<strong><code>camel-jetty</code></strong> creates an attachment for each uploaded file. The file name is mapped to the name of the attachment. The content type is set as the content type of the attachment file name. You can find the example here.
- </p><div class="error">
-  <span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> 
+ </div><h3 id="BookComponentAppendix-Multi-PartFormSupport">Multi-Part Form Support</h3><p>From <strong>Camel 2.3.0</strong>: <strong><code>camel-jetty</code></strong> support to multi-part form post out of box. The submitted form-data are mapped into the message header.&#160;<strong><code>camel-jetty</code></strong> creates an attachment for each uploaded file. The file name is mapped to the name of the attachment. The content type is set as the content type of the attachment file name. You can find the example here.
+ </p><div class="code panel pdl" style="border-width: 1px;">
+  <div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;">
+   <b>Note: getName() functions as shown below in versions 2.5 and higher. In earlier versions you receive the temporary file name for the attachment instead</b>
+  </div>
+  <div class="codeContent panelContent pdl"> 
+   <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"> // Set the jetty temp directory which store the file for multi // part form // camel-jetty will clean up the file after it handled the // request. // The option works rightly from Camel 2.4.0 getContext().getProperties().put(&amp;quot;CamelJettyTempDir&amp;quot;, &amp;quot;target&amp;quot;); from(&amp;quot;jetty://http://localhost:{{port}}/test&amp;quot;).process(new Processor() { public void process(Exchange exchange) throws Exception { Message in = exchange.getIn(); assertEquals(&amp;quot;Get a wrong attachement size&amp;quot;, 2, in.getAttachments().size()); // The file name is attachment id DataHandler data = in.getAttachment(&amp;quot;NOTICE.txt&amp;quot;); assertNotNull(&amp;quot;Should get the DataHandle NOTICE.txt&amp;quot;, data); // This assert is wrong, but the correct content-type // (application/octet-stream) // will not be returned until Jetty makes it available - // currently the c
 ontent-type // returned is just the default for FileDataHandler (for // the implentation being used) // assertEquals(&amp;quot;Get a wrong content type&amp;quot;, // &amp;quot;text/plain&amp;quot;, data.getContentType()); assertEquals(&amp;quot;Got the wrong name&amp;quot;, &amp;quot;NOTICE.txt&amp;quot;, data.getName()); assertTrue(&amp;quot;We should get the data from the DataHandle&amp;quot;, data.getDataSource() .getInputStream().available() &amp;gt; 0); // The other form date can be get from the message // header // For binary attachment, header should also be populated by DataHandler but not payload Object header = in.getHeader(&amp;quot;NOTICE.txt&amp;quot;); assertEquals(DataHandler.class, header.getClass()); assertEquals(data, header); exchange.getOut().setBody(in.getHeader(&amp;quot;comment&amp;quot;)); } }); </script> 
+  </div>
  </div><h3 id="BookComponentAppendix-JettyJMXSupport">Jetty JMX Support</h3><p>From <strong>Camel 2.3.0</strong>:&#160;<strong><code>camel-jetty</code></strong> supports the enabling of Jetty's JMX capabilities at the component and endpoint level with the endpoint configuration taking priority.</p><p><strong>Note</strong>: JMX must be enabled within the Camel context in order to enable JMX support in this component as the component provides Jetty with a reference to the&#160;<strong><code>MBeanServer</code></strong> registered with the Camel context.</p><p>As the&#160;<strong><code>camel-jetty</code></strong> component caches and reuses Jetty resources for a given protocol/host/port pairing, this configuration option will only be evaluated during the creation of the first endpoint to use a protocol/host/port pairing.</p><p><strong>Example</strong>: given two routes created from the following XML fragments, JMX support would remain enabled for all endpoints listening on: <strong><cod
 e>https://0.0.0.0</code></strong>.</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">&amp;lt;from uri=&amp;quot;jetty:https://0.0.0.0/myapp/myservice1/?enableJmx=true&amp;quot;/&amp;gt; </script> 

Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Wed Jan 25 16:19:48 2017
@@ -3940,11 +3940,11 @@ The tutorial has been designed in two pa
 While not actual tutorials you might find working through the source of the various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
 
 <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</h2><p>&#160;</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.rbtoc1485299873808 {padding: 0px;}
-div.rbtoc1485299873808 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1485299873808 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1485361089060 {padding: 0px;}
+div.rbtoc1485361089060 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1485361089060 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1485299873808">
+/*]]>*/</style></p><div class="toc-macro rbtoc1485361089060">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-About">About</a></li><li><a shape="rect" href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the Server</a>
@@ -6059,11 +6059,11 @@ So we completed the last piece in the pi
 <p>This example has been removed from <strong>Camel 2.9</strong> onwards. Apache Axis 1.4 is a very old and unsupported framework. We encourage users to use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1485299873984 {padding: 0px;}
-div.rbtoc1485299873984 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1485299873984 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1485361089232 {padding: 0px;}
+div.rbtoc1485361089232 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1485361089232 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1485299873984">
+/*]]>*/</style><div class="toc-macro rbtoc1485361089232">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#BookInOnePage-RunningtheExample">Running the Example</a></li></ul>
@@ -14244,8 +14244,8 @@ cometds://localhost:8443/service/mychann
  <div class="confluence-information-macro-body">
   <p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p>
  </div>
-</div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/ div.rbtoc1485299877611 {padding: 0px;} div.rbtoc1485299877611 ul {list-style: disc;margin-left: 0px;} div.rbtoc1485299877611 li {margin-left: 0px;padding-left: 0px;} /**/</style>
- </p><div class="toc-macro rbtoc1485299877611"> 
+</div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/ div.rbtoc1485361111892 {padding: 0px;} div.rbtoc1485361111892 ul {list-style: disc;margin-left: 0px;} div.rbtoc1485361111892 li {margin-left: 0px;padding-left: 0px;} /**/</style>
+ </p><div class="toc-macro rbtoc1485361111892"> 
   <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> 
@@ -16546,7 +16546,7 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><p>Where the processor implementation can access the <strong><code>HttpSession</code></strong> as follows:</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">public void process(Exchange exchange) throws Exception { HttpSession session = exchange.getIn(HttpMessage.class).getRequest().getSession(); ... } </script> 
+  <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter">public void process(Exchange exchange) throws Exception { HttpSession session = exchange.getIn(HttpMessage.class).getRequest().getSession(); // ... } </script> 
  </div>
 </div><h3 id="BookInOnePage-SSLSupport(HTTPS)">SSL Support (HTTPS)</h3><h5 id="BookInOnePage-UsingtheJSSEConfigurationUtility.3">Using the JSSE Configuration Utility</h5><p>From <strong>Camel 2.8</strong>: the&#160;<strong><code>camel-jetty</code></strong> component supports SSL/TLS configuration through the <a shape="rect" href="camel-configuration-utilities.html">Camel JSSE Configuration Utility</a>.&#160; This utility greatly decreases the amount of component specific code you need to write and is configurable at the endpoint and component levels.&#160; The following examples demonstrate how to use the utility with the Jetty component.</p><h6 id="BookInOnePage-Programmaticconfigurationofthecomponent.1">Programmatic configuration of the component</h6><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -16554,31 +16554,35 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><h6 id="BookInOnePage-SpringDSLbasedconfigurationofendpoint.2">Spring DSL based configuration of endpoint</h6><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
-  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">... &amp;lt;camel:sslContextParameters id=&amp;quot;sslContextParameters&amp;quot;&amp;gt; &amp;lt;camel:keyManagers keyPassword=&amp;quot;keyPassword&amp;quot;&amp;gt; &amp;lt;camel:keyStore resource=&amp;quot;/users/home/server/keystore.jks&amp;quot; password=&amp;quot;keystorePassword&amp;quot;/&amp;gt; &amp;lt;/camel:keyManagers&amp;gt; &amp;lt;/camel:sslContextParameters&amp;gt;... ... &amp;lt;to uri=&amp;quot;jetty:https://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters&amp;quot;/&amp;gt; ... </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;camel:sslContextParameters id=&amp;quot;sslContextParameters&amp;quot;&amp;gt; &amp;lt;camel:keyManagers keyPassword=&amp;quot;keyPassword&amp;quot;&amp;gt; &amp;lt;camel:keyStore resource=&amp;quot;/users/home/server/keystore.jks&amp;quot; password=&amp;quot;keystorePassword&amp;quot;/&amp;gt; &amp;lt;/camel:keyManagers&amp;gt; &amp;lt;/camel:sslContextParameters&amp;gt; &amp;lt;to uri=&amp;quot;jetty:https://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters&amp;quot;/&amp;gt; </script> 
  </div>
 </div><h5 id="BookInOnePage-ConfiguringJettyDirectly">Configuring Jetty Directly</h5><p>Jetty provides SSL support out of the box. To enable Jetty to run in SSL mode, simply format the URI using the <strong><code>https://</code></strong> prefix.</p><p><strong>Example</strong>:</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">&amp;lt;from uri=&amp;quot;jetty:https://0.0.0.0/myapp/myservice/&amp;quot;/&amp;gt; </script> 
  </div>
-</div><p>Jetty also needs to know where to load your keystore from and what passwords to use in order to load the correct SSL certificate. Set the following JVM System Properties:</p><p><strong>Before Camel 2.3</strong>:</p><div class="table-wrap">
- <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Property</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>jetty.ssl.keystore</code></td><td colspan="1" rowspan="1" class="confluenceTd">Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>jetty.ssl.password</code></td><td colspan="1" rowspan="1" class="confluenceTd">The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same password that is supplied to the <strong><code>keystore</code></s
 trong> command's <strong><code>-storepass</code></strong> option).</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>jetty.ssl.keypassword</code></td><td colspan="1" rowspan="1" class="confluenceTd">The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the <strong><code>keystore</code></strong> command's <strong><code>-keypass</code></strong> option).</td></tr></tbody></table>
-</div><p>&#160;</p><p><strong>From Camel 2.3</strong>:</p><div class="table-wrap">
- <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Property</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>org.eclipse.jetty.ssl.keystore</code></td><td colspan="1" rowspan="1" class="confluenceTd">Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>org.eclipse.jetty.ssl.password</code></td><td colspan="1" rowspan="1" class="confluenceTd">The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same password that is supplied to the&#160;<st
 rong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>org.eclipse.jetty.ssl.keypassword</code></td><td colspan="1" rowspan="1" class="confluenceTd">The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the&#160;<strong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</td></tr></tbody></table>
-</div><p>For details of how to configure SSL on a Jetty endpoint, read the following <a shape="rect" class="external-link" href="http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html" rel="nofollow">Jetty documentation</a>.</p><p>Some SSL properties aren't exposed directly by Camel. However, Camel does expose the underlying <strong><code>SslSocketConnector</code></strong>, which will allow you to set properties like&#160;<strong><code>needClientAuth</code></strong> for mutual authentication requiring a client certificate or&#160;<strong><code>wantClientAuth</code></strong> for mutual authentication where a client doesn't need a certificate but can have one.</p><p>There's a slight difference between the various Camel versions:</p><p><strong>Up to Camel 2.2</strong></p><div class="code panel pdl" style="border-width: 1px;">
+</div><p>Jetty also needs to know where to load your keystore from and what passwords to use in order to load the correct SSL certificate. Set the following JVM System Properties:</p><p><strong>Before Camel 2.3</strong>:</p><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>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>jetty.ssl.keystore</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>jetty.ssl.password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same password that is supplied 
 to the <strong><code>keystore</code></strong> command's <strong><code>-storepass</code></strong> option).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>jetty.ssl.keypassword</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the <strong><code>keystore</code></strong> command's <strong><code>-keypass</code></strong> option).</p></td></tr></tbody></table> 
+ </div>
+</div><p>&#160;</p><p><strong>From Camel 2.3</strong>:</p><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>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.eclipse.jetty.ssl.keystore</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Specifies the location of the Java&#160;<strong><code>keystore</code></strong> file, which contains the Jetty server's own&#160;<strong><code>X.509</code></strong> certificate in a <em>key entry</em>. A key entry stores the&#160;<strong><code>X.509</code></strong> certificate (effectively, the <em>public key</em>) and also its associated private key.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.eclipse.jetty.ssl.password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The store password, which is required to access the&#160;<strong><code>keystore</code></strong> file (this is the same pa
 ssword that is supplied to the&#160;<strong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.eclipse.jetty.ssl.keypassword</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The key password, which is used to access the certificate's key entry in the&#160;<strong><code>keystore</code></strong> (this is the same password that is supplied to the&#160;<strong><code>keystore</code></strong> command's&#160;<strong><code>keystore</code></strong> option).</p></td></tr></tbody></table> 
+ </div>
+</div><p>For details of how to configure SSL on a Jetty endpoint, read the following <a shape="rect" class="external-link" href="http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html" rel="nofollow">Jetty documentation</a>. Some SSL properties aren't exposed directly by Camel. However, Camel does expose the underlying <strong><code>SslSocketConnector</code></strong>, which will allow you to set properties like&#160;<strong><code>needClientAuth</code></strong> for mutual authentication requiring a client certificate or&#160;<strong><code>wantClientAuth</code></strong> for mutual authentication where a client doesn't need a certificate but can have one.</p><p>There's a slight difference between the various Camel versions:</p><p><strong>Up to Camel 2.2</strong></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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.mortbay.jetty.security.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &a
 mp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.mortbay.jetty.security.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &a
 mp;lt;/bean&amp;gt;</script> 
  </div>
 </div><p><strong>Camel 2.3, 2.4</strong></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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; 
 &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSocketConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; 
 &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><p>From <strong>Camel 2.5</strong>: we switch to use&#160;<strong><code>SslSelectChannelConnector *</code></strong></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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSelectChannelConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&a
 mp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectors&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;8043&amp;quot;&amp;gt; &amp;lt;bean class=&amp;quot;org.eclipse.jetty.server.ssl.SslSelectChannelConnector&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;property name=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; &amp;lt;/entry&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&a
 mp;gt; &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><p>The value you use as keys in the above map is the port you configure Jetty to listen on.</p><h4 id="BookInOnePage-ConfiguringGeneralSSLProperties">Configuring General SSL Properties</h4><p>From<strong> Camel 2.5</strong>: instead of a per port number specific SSL socket connector (as shown above) you can now configure general properties which applies for all SSL socket connectors (which is not explicit configured as above with the port number as entry).</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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;sslSocketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;password&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keyPassword&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;keystore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;needClientAuth&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;truststore&amp;quot;value=&amp;quot;...&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><h4 id="BookInOnePage-HowtoObtainAReferencetotheX509Certificate">How to Obtain A Reference to the&#160;<code>X509Certificate</code></h4><p>Jetty stores a reference to the certificate in the&#160;<strong><code>HttpServletRequest</code></strong> which you can access from code as follows:</p><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -16586,7 +16590,7 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><h4 id="BookInOnePage-ConfiguringGeneralHTTPProperties">Configuring General HTTP Properties</h4><p>From<strong> Camel 2.5</strong>: instead of a per port number specific HTTP socket connector (as shown above) you can now configure general properties which applies for all HTTP socket connectors (which is not explicit configured as above with the port number as entry).</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">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;socketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;acceptors&amp;quot; value=&amp;quot;4&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;maxIdleTime&amp;quot; value=&amp;quot;300000&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;jetty&amp;quot; class=&amp;quot;org.apache.camel.component.jetty.JettyHttpComponent&amp;quot;&amp;gt; &amp;lt;property name=&amp;quot;socketConnectorProperties&amp;quot;&amp;gt; &amp;lt;map&amp;gt; &amp;lt;entry key=&amp;quot;acceptors&amp;quot; value=&amp;quot;4&amp;quot;/&amp;gt; &amp;lt;entry key=&amp;quot;maxIdleTime&amp;quot; value=&amp;quot;300000&amp;quot;/&amp;gt; &amp;lt;/map&amp;gt; &amp;lt;/property&amp;gt; &amp;lt;/bean&amp;gt;</script> 
  </div>
 </div><h4 id="BookInOnePage-HowtoGettheValueofTheX-Forwarded-ForHTTPHeaderUsingHttpServletRequest.getRemoteAddr()">How to Get the Value of The <code>X-Forwarded-For</code> HTTP Header Using <code>HttpServletRequest.getRemoteAddr()</code></h4><p>If the HTTP requests are handled by an Apache server and forwarded to Jetty with <strong><code>mod_proxy</code></strong>, the original client IP address is in the&#160;<strong><code>X-Forwarded-For</code></strong> header and the&#160;<strong><code>HttpServletRequest.getRemoteAddr()</code></strong> will return the address of the Apache proxy.</p><p>Jetty has a forwarded property which takes the value from&#160;<strong><code>X-Forwarded-For</code></strong> and places it in the&#160;<strong><code>HttpServletRequest remoteAddr</code></strong> property.&#160; This property is not available directly through the endpoint configuration but it can be easily added using the&#160;<strong><code>socketConnectors</code></strong> property:</p><div class="co
 de panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -16603,7 +16607,7 @@ cometds://localhost:8443/service/mychann
  </div>
 </div><p>And then we can reference this binding when we define the route:</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">&amp;lt;route&amp;gt;&amp;lt;from uri=&amp;quot;jetty:http://0.0.0.0:8080/myapp/myservice?httpBindingRef=mybinding&amp;quot;/&amp;gt;&amp;lt;to uri=&amp;quot;bean:doSomething&amp;quot;/&amp;gt;&amp;lt;/route&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter">&amp;lt;route&amp;gt; &amp;lt;from uri=&amp;quot;jetty:http://0.0.0.0:8080/myapp/myservice?httpBindingRef=mybinding&amp;quot;/&amp;gt; &amp;lt;to uri=&amp;quot;bean:doSomething&amp;quot;/&amp;gt; &amp;lt;/route&amp;gt; </script> 
  </div>
 </div><h3 id="BookInOnePage-JettyHandlersandSecurityConfiguration">Jetty Handlers and Security Configuration</h3><p>You can configure a list of Jetty handlers on the endpoint, which can be useful for enabling advanced Jetty security features. These handlers are configured in Spring XML as follows:</p><div class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
@@ -16617,14 +16621,19 @@ cometds://localhost:8443/service/mychann
  <div class="codeContent panelContent pdl"> 
   <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter">from(&amp;quot;jetty:http://0.0.0.0:9080/myservice?handlers=securityHandler&amp;quot;) </script> 
  </div>
-</div><p>If you need more handlers, set the <strong><code>handlers</code></strong> option equal to a comma-separated list of bean IDs.</p><h3 id="BookInOnePage-HowtoReturnaCustomHTTP500ReplyMessage">How to Return a Custom HTTP 500 Reply Message</h3><p>You may want to return a custom reply message when something goes wrong, instead of the default reply message Camel <a shape="rect" href="jetty.html">Jetty</a> replies with. You could use a custom <strong><code>HttpBinding</code></strong> to be in control of the message mapping, but often it may be easier to use Camel's <a shape="rect" href="exception-clause.html">Exception Clause</a> to construct the custom reply message.</p><p>Example: return the message: <strong><code>Dude something went wrong</code></strong> for the HTTP error code <strong><code>500</code></strong>:
+</div><p>If you need more handlers, set the <strong><code>handlers</code></strong> option equal to a comma-separated list of bean IDs.</p><h3 id="BookInOnePage-HowtoCustomizetheResponseonanHTTP500ServerError">How to Customize the Response on an <code>HTTP 500</code> Server Error</h3><p>You may want to return a custom reply message when something goes wrong, instead of the default reply message Camel <a shape="rect" href="jetty.html">Jetty</a> replies with. You could use a custom <strong><code>HttpBinding</code></strong> to be in control of the message mapping, but often it may be easier to use Camel's <a shape="rect" href="exception-clause.html">Exception Clause</a> to construct the custom reply message.</p><p>Example: return the message: <strong><code>Dude something went wrong</code></strong> for the HTTP error code <strong><code>500</code></strong>:
  </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"> from(&amp;quot;jetty://http://localhost:{{port}}/myserver&amp;quot;) // use onException to catch all exceptions and return a custom reply message .onException(Exception.class) .handled(true) // create a custom failure response .transform(constant(&amp;quot;Dude something went wrong&amp;quot;)) // we must remember to set error code 500 as handled(true) // otherwise would let Camel thing its a OK response (200) .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500)) .end() // now just force an exception immediately .throwException(new IllegalArgumentException(&amp;quot;I cannot do this&amp;quot;)); </script> 
   </div>
- </div><h3 id="BookInOnePage-Multi-PartFormsupport">Multi-Part Form support</h3><p>From <strong>Camel 2.3.0</strong>: <strong><code>camel-jetty</code></strong> support to multi-part form post out of box. The submitted form-data are mapped into the message header.&#160;<strong><code>camel-jetty</code></strong> creates an attachment for each uploaded file. The file name is mapped to the name of the attachment. The content type is set as the content type of the attachment file name. You can find the example here.
- </p><div class="error">
-  <span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> 
+ </div><h3 id="BookInOnePage-Multi-PartFormSupport">Multi-Part Form Support</h3><p>From <strong>Camel 2.3.0</strong>: <strong><code>camel-jetty</code></strong> support to multi-part form post out of box. The submitted form-data are mapped into the message header.&#160;<strong><code>camel-jetty</code></strong> creates an attachment for each uploaded file. The file name is mapped to the name of the attachment. The content type is set as the content type of the attachment file name. You can find the example here.
+ </p><div class="code panel pdl" style="border-width: 1px;">
+  <div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;">
+   <b>Note: getName() functions as shown below in versions 2.5 and higher. In earlier versions you receive the temporary file name for the attachment instead</b>
+  </div>
+  <div class="codeContent panelContent pdl"> 
+   <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"> // Set the jetty temp directory which store the file for multi // part form // camel-jetty will clean up the file after it handled the // request. // The option works rightly from Camel 2.4.0 getContext().getProperties().put(&amp;quot;CamelJettyTempDir&amp;quot;, &amp;quot;target&amp;quot;); from(&amp;quot;jetty://http://localhost:{{port}}/test&amp;quot;).process(new Processor() { public void process(Exchange exchange) throws Exception { Message in = exchange.getIn(); assertEquals(&amp;quot;Get a wrong attachement size&amp;quot;, 2, in.getAttachments().size()); // The file name is attachment id DataHandler data = in.getAttachment(&amp;quot;NOTICE.txt&amp;quot;); assertNotNull(&amp;quot;Should get the DataHandle NOTICE.txt&amp;quot;, data); // This assert is wrong, but the correct content-type // (application/octet-stream) // will not be returned until Jetty makes it available - // currently the c
 ontent-type // returned is just the default for FileDataHandler (for // the implentation being used) // assertEquals(&amp;quot;Get a wrong content type&amp;quot;, // &amp;quot;text/plain&amp;quot;, data.getContentType()); assertEquals(&amp;quot;Got the wrong name&amp;quot;, &amp;quot;NOTICE.txt&amp;quot;, data.getName()); assertTrue(&amp;quot;We should get the data from the DataHandle&amp;quot;, data.getDataSource() .getInputStream().available() &amp;gt; 0); // The other form date can be get from the message // header // For binary attachment, header should also be populated by DataHandler but not payload Object header = in.getHeader(&amp;quot;NOTICE.txt&amp;quot;); assertEquals(DataHandler.class, header.getClass()); assertEquals(data, header); exchange.getOut().setBody(in.getHeader(&amp;quot;comment&amp;quot;)); } }); </script> 
+  </div>
  </div><h3 id="BookInOnePage-JettyJMXSupport">Jetty JMX Support</h3><p>From <strong>Camel 2.3.0</strong>:&#160;<strong><code>camel-jetty</code></strong> supports the enabling of Jetty's JMX capabilities at the component and endpoint level with the endpoint configuration taking priority.</p><p><strong>Note</strong>: JMX must be enabled within the Camel context in order to enable JMX support in this component as the component provides Jetty with a reference to the&#160;<strong><code>MBeanServer</code></strong> registered with the Camel context.</p><p>As the&#160;<strong><code>camel-jetty</code></strong> component caches and reuses Jetty resources for a given protocol/host/port pairing, this configuration option will only be evaluated during the creation of the first endpoint to use a protocol/host/port pairing.</p><p><strong>Example</strong>: given two routes created from the following XML fragments, JMX support would remain enabled for all endpoints listening on: <strong><code>https:
 //0.0.0.0</code></strong>.</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">&amp;lt;from uri=&amp;quot;jetty:https://0.0.0.0/myapp/myservice1/?enableJmx=true&amp;quot;/&amp;gt; </script> 

Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.