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 2016/05/24 12:18:43 UTC

svn commit: r989033 - in /websites/production/camel/content: cache/main.pageCache servicecall-eip.html

Author: buildbot
Date: Tue May 24 12:18:43 2016
New Revision: 989033

Log:
Production update by buildbot for camel

Added:
    websites/production/camel/content/servicecall-eip.html
Modified:
    websites/production/camel/content/cache/main.pageCache

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

Added: websites/production/camel/content/servicecall-eip.html
==============================================================================
--- websites/production/camel/content/servicecall-eip.html (added)
+++ websites/production/camel/content/servicecall-eip.html Tue May 24 12:18:43 2016
@@ -0,0 +1,216 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+<head>
+    <link href="//camel.apache.org/styles/site.css" rel="stylesheet" type="text/css">
+    <link href="//camel.apache.org/styles/type-settings.css" rel="stylesheet" type="text/css">
+    <script src="//camel.apache.org/styles/prototype.js" type="text/javascript"></script>
+    <script src="//camel.apache.org/styles/rico.js" type="text/javascript"></script>    
+    <script src="//camel.apache.org/styles/site.js" type="text/javascript"></script>
+
+    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+    <style type="text/css">
+      .maincontent { overflow:hidden; }
+    </style>
+    <!--[if IE]>
+    <style type="text/css">
+      .maincontent { width:100%; }
+    </style>
+    <![endif]-->
+
+
+  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' rel='stylesheet' type='text/css' />
+  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' rel='stylesheet' type='text/css' />
+  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script>
+  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
+  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
+  
+  <script type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
+
+    <title>
+    Apache Camel: ServiceCall EIP
+    </title>
+</head>
+<body>
+<div class="white_box">
+<div class="header">
+  <div class="header_l">
+    <div class="header_r">
+    </div>
+  </div>
+</div>
+<div class="content">
+  <div class="content_l">
+    <div class="content_r">
+      <div>
+          <!-- Banner -->
+<div id="banner-content"><div id="asf_logo">
+	<div id="activemq_logo" style="height:108px; background:transparent url(banner.data/apache-camel-7.png) no-repeat scroll left top;">
+            <a shape="rect" style="float:left; width:310px;display:block;text-indent:-5000px;text-decoration:none;line-height:140px; margin-top:20px; margin-left:18px;" href="http://camel.apache.org/">Camel</a>
+            <a shape="rect" style="float:right; width:180px;display:block;text-indent:-5000px;text-decoration:none;line-height:80px; margin-top:45px; margin-right:10px;" href="http://www.apache.org">Apache</a>
+	</div>
+</div></div>
+          <!-- Banner -->
+        <div class="top_red_bar">
+          <div id="site-breadcrumbs">
+                <!-- Breadcrumbs -->
+<a href="index.html">Apache Camel</a>&nbsp;&gt;&nbsp;<a href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a>&nbsp;&gt;&nbsp;<a href="servicecall-eip.html">ServiceCall EIP</a>
+          </div>
+          <!-- Quicklinks -->
+<div id="site-quicklinks"><p><a shape="rect" href="download.html">Download</a> | <a shape="rect" href="javadoc.html">JavaDoc</a> | <a shape="rect" href="source.html">Source</a> | <a shape="rect" href="discussion-forums.html">Forums</a> | <a shape="rect" href="support.html">Support</a></p></div>
+          <!-- Quicklinks -->
+        </div>
+
+	<table border="0">
+	<tbody>
+        <tr>
+        <td valign="top" width="100%">
+<div class="wiki-content maincontent"><h2 id="ServiceCallEIP-ServiceCallEIP">ServiceCall EIP</h2><p><strong>Available as of Camel 2.18</strong></p><p>The serviceCall EIP allows to call remote services in a distributed system. The service to call is looked up in a service registry of some sorts such as Kubernetes, Consul, etcd, zookeeper.<br clear="none">The EIP separates the configuration of the service registry from the calling of the service.&#160;</p><p>Maven users will need to add the dependency for the service registry supported from the following:</p><ul><li>camel-kubernetes</li><li>camel-ribbon</li></ul><p>Each implementation has their own set of configuration.</p><h3 id="ServiceCallEIP-Syntax">Syntax</h3><p>When calling a service you may just refer to the name of the service in the EIP as shown below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:start&quot;)
+    .serviceCall(&quot;foo&quot;)
+    .to(&quot;mock:result&quot;);]]></script>
+</div></div><p>And in XML DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
+  &lt;route&gt;
+    &lt;from uri=&quot;direct:start&quot;/&gt;
+    &lt;serviceCall name=&quot;foo&quot;/&gt;
+    &lt;to uri=&quot;mock:result&quot;/&gt;
+  &lt;/route&gt;
+&lt;/camelContext&gt;]]></script>
+</div></div><p>Camel will then lookup a service with the name "foo" from the chosen Camel component that integrates with the service registry. The lookup returns a set of IP:PORT paris that refer to which active servers that host the remote service. Camel will then pick a random server to use and then build a Camel uri with the chosen IP and PORT number. By default Camel uses the HTTP component, so the example above will resolve into a Camel uri that is called by a dynamic to endpoint as shown:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[toD(&quot;http://IP:PORT&quot;)
+ 
+&lt;toD uri=&quot;http:IP:port&quot;/&gt;]]></script>
+</div></div><p>You can also call the service using URI parameters such as beer=yes</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[serviceCall(&quot;foo?beer=yes&quot;)
+ 
+&lt;serviceCall name=&quot;foo?beer=yes&quot;)]]></script>
+</div></div><p>You can also provide a context-path such as shown:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[serviceCall(&quot;foo/beverage?beer=yes&quot;)
+ 
+&lt;serviceCall name=&quot;foo/beverage?beer=yes&quot;)]]></script>
+</div></div><h3 id="ServiceCallEIP-ServiceNametoCamelURIExamples">Service Name to Camel URI Examples</h3><p>So as you can see above the service name is resolved as a Camel endpoint uri, and here is a few more examples (where -&gt; shows what the Camel uri is resolved as)</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[serviceCall(&quot;myService&quot;) -&gt; http://hostname:port
+serviceCall(&quot;myService/foo&quot;) -&gt; http://hostname:port/foo
+serviceCall(&quot;http:myService/foo&quot;) -&gt; http:hostname:port/foo
+ 
+&lt;serviceCall name=&quot;myService&quot;/&gt; -&gt; http://hostname:port
+&lt;serviceCall name=&quot;myService/foo&quot;/&gt; -&gt; http://hostname:port/foo
+&lt;serviceCall name=&quot;http:myService/foo&quot;/&gt; -&gt; http:hostname:port/foo]]></script>
+</div></div><p>If you want full control of the resolved URI you can provide an additional uri parameter where you specify the Camel uri as you want. In the uri you can use the service name which are then resolved to IP:PORT as shown:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[serviceCall(&quot;myService&quot;, &quot;http:myService.host:myService.port/foo&quot;) -&gt; http:hostname:port/foo
+serviceCall(&quot;myService&quot;, &quot;netty4:tcp:myService?connectTimeout=1000&quot;) -&gt; netty:tcp:hostname:port?connectTimeout=1000
+ 
+&lt;serviceCall name=&quot;myService&quot; uri=&quot;http:myService.host:myService.port/foo&quot;/&gt; -&gt; http:hostname:port/foo
+&lt;serviceCall name=&quot;myService&quot; uri=&quot;netty4:tcp:myService?connectTimeout=1000&quot;/&gt; -&gt; netty:tcp:hostname:port?connectTimeout=1000]]></script>
+</div></div><p>In the example above we want to call a service named "myService" and we can control the resolved URI as in the 2nd parameter. Notice how in the 1st we can use serviceName.host and serviceName.port to refer to either the IP or PORT. If you just use serviceName then its resolved as IP:PORT.</p><h3 id="ServiceCallEIP-ConfiguringServiceCall">Configuring Service Call</h3><p>By default Camel will call the service using the&#160;<a shape="rect" href="http.html">HTTP</a> component, but you can configure to use a different component such as&#160;<a shape="rect" href="http4.html">HTTP4</a>,&#160;<a shape="rect" href="netty4-http.html">Netty4 HTTP</a> as shown:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[KubernetesConfigurationDefinition config = new KubernetesConfigurationDefinition();
+config.setComponent(&quot;netty4-http&quot;);
+ 
+// register the service call configuration
+context.setServiceCallConfiguration(config);
+ 
+from(&quot;direct:start&quot;)
+    .serviceCall(&quot;foo&quot;)
+    .to(&quot;mock:result&quot;);]]></script>
+</div></div><p>.. and in XML DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
+  &lt;kubernetesConfiguration id=&quot;kubernetes&quot; component=&quot;netty4-http&quot;/&gt;
+  &lt;route&gt;
+    &lt;from uri=&quot;direct:start&quot;/&gt;
+    &lt;serviceCall name=&quot;foo&quot;/&gt;
+    &lt;to uri=&quot;mock:result&quot;/&gt;
+  &lt;/route&gt;
+&lt;/camelContext&gt;
+
+]]></script>
+</div></div><h3 id="ServiceCallEIP-CommonConfiguration">Common Configuration</h3><p>These are the common configuration that each implementation is sharing.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Name</th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default<br clear="none">Value</p></th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">component</td><td colspan="1" rowspan="1" class="confluenceTd">http</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the default Camel component to use for calling the remote service.<br clear="none">By default the http component is used. You can configure this to use netty4-http, jetty, restlet or some other components of choice.<br clear="none">If the service is not HTTP protocol you can use other components such as mqtt, jms, amqp&lt;/tt&gt; etc.<br clear="none">If the service call
  has been configured using an uri, then the component from the uri is used instead of this default component.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">loadBalancerRef</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets a reference to a custom org.apache.camel.spi.ServiceCallLoadBalancer to use.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">serverListStrategyRef</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets a reference to a custom org.apache.camel.spi.ServiceCallServerListStrategy to use.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientProperty</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">These properties are specific to what service call implementation are in use.<br clear="none">For example if using ribbon, then the cli
 ent properties are define in com.netflix.client.config.CommonClientConfigKey.</td></tr></tbody></table></div><p>&#160;</p><h3 id="ServiceCallEIP-KubernetesConfiguration">Kubernetes Configuration</h3><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">lookup</td><td colspan="1" rowspan="1" class="confluenceTd">environment</td><td colspan="1" rowspan="1" class="confluenceTd">What strategy to lookup the service. Possible values: environment, dns, client. By default enviornment is used to use environment variables. dns is for using DNS domain names. client is for use Java Client to call the kubernetes master API and query which servers are active hosting the service.</td></tr><tr><td colspan="1" rowspan="1" c
 lass="confluenceTd">dnsDomain</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the DNS domain to use for DNS lookup.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">namespace</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">The kubernetes namespace to use. Will by default use namespace from the ENV variable KUBERNETES_MASTER.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">apiVersion</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Client lookup. Kubernetes API version.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">&#160;masterUrl</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Client lookup. The url for the Kubernets master.&#160;</td></tr><tr><td colspan="1" rowspan="1" class="con
 fluenceTd">username</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the username for authentication when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">password</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the password for authentication when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthToken</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the OAUTH token for authentication (instead of username/password) when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">caCertData</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Certificate Authority data when using client lookup</td></tr><tr><td colspan="1
 " rowspan="1" class="confluenceTd">caCertFile</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Certificate Authority data that are loaded from the file when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientCertData</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Client Certificate data when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientCertFile</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Client Certificate data that are loaded from the file when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientKeyAlgo</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Client Keystore algorit
 hm, such as RSA when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientKeyData</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Client Keystore data when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientKeyFile</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Client Keystore data that are loaded from the file when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">clientKeyPassphrase</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd">Sets the Client Keystore passphrase when using client lookup</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">trustCerts</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceT
 d">Sets whether to turn on trust certificate check when using client lookup</td></tr></tbody></table></div><h3 id="ServiceCallEIP-RibbonConfiguration">Ribbon Configuration</h3><p>Currenly no ribbon specific options yet.</p><h3 id="ServiceCallEIP-"><br clear="none"><br clear="none"></h3></div>
+        </td>
+        <td valign="top">
+          <div class="navigation">
+            <div class="navigation_top">
+                <!-- NavigationBar -->
+<div class="navigation_bottom" id="navigation_bottom"><h3 id="Navigation-Overview"><a shape="rect" href="overview.html">Overview</a></h3><ul class="alternate"><li><a shape="rect" href="index.html">Home</a></li><li><a shape="rect" href="download.html">Download</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li><li><a shape="rect" href="faq.html">FAQ</a></li></ul><h3 id="Navigation-Documentation"><a shape="rect" href="documentation.html">Documentation</a></h3><ul class="alternate"><li><a shape="rect" href="user-guide.html">User Guide</a></li><li><a shape="rect" href="manual.html">Manual</a></li><li><a shape="rect" href="books.html">Books</a></li><li><a shape="rect" href="tutorials.html">Tutorials</a></li><li><a shape="rect" href="examples.html">Examples</a></li><li><a shape="rect" href="cookbook.html">Cookbook</a></li><li><a shape="rect" href="architecture.html">Architecture</a></li><li><a shape="rect" href="enterprise-integration-patterns.html">Enterprise
  Integration Patterns</a></li><li><a shape="rect" href="dsl.html">DSL</a></li><li><a shape="rect" href="components.html">Components</a></li><li><a shape="rect" href="data-format.html">Data Format</a></li><li><a shape="rect" href="languages.html">Languages</a></li><li><a shape="rect" href="security.html">Security</a></li><li><a shape="rect" href="security-advisories.html">Security Advisories</a></li></ul><h3 id="Navigation-Search">Search</h3><form enctype="application/x-www-form-urlencoded" method="get" id="cse-search-box" action="http://www.google.com/cse">
+  <div>
+    <input type="hidden" name="cx" value="007878419884033443453:m5nhvy4hmyq">
+    <input type="hidden" name="ie" value="UTF-8">
+    <input type="text" name="q" size="21">
+    <input type="submit" name="sa" value="Search">
+  </div>
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script><h3 id="Navigation-Community"><a shape="rect" href="community.html">Community</a></h3><ul class="alternate"><li><a shape="rect" href="support.html">Support</a></li><li><a shape="rect" href="contributing.html">Contributing</a></li><li><a shape="rect" href="discussion-forums.html">Discussion Forums</a></li><li><a shape="rect" href="mailing-lists.html">Mailing Lists</a></li><li><a shape="rect" href="user-stories.html">User Stories</a></li><li><a shape="rect" href="news.html">News</a></li><li><a shape="rect" href="articles.html">Articles</a></li><li><a shape="rect" href="site.html">Site</a></li><li><a shape="rect" href="team.html">Team</a></li><li><a shape="rect" class="external-link" href="http://camel-extra.googlecode.com/" rel="nofollow">Camel Extra</a></li></ul><h3 id="Navigation-Developers"><a shape="rect" href="developers.html">Developers</a></h3><ul class="alternate"
 ><li><a shape="rect" href="developers.html">Developer Guide</a></li><li><a shape="rect" href="source.html">Source</a></li><li><a shape="rect" href="building.html">Building</a></li><li><a shape="rect" href="javadoc.html">JavaDoc</a></li><li><a shape="rect" href="irc-room.html">IRC Room</a></li></ul><h3 id="Navigation-ApacheSoftwareFoundation">Apache Software Foundation</h3><ul class="alternate"><li><a shape="rect" class="external-link" href="http://www.apache.org/licenses/">License</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/security/">Security</a></li></ul></div>
+                <!-- NavigationBar -->
+            </div>
+          </div>
+        </td>
+        </tr>
+	</tbody>
+        </table>
+
+
+        <div class="bottom_red_bar"></div>
+      </div>
+    </div>
+  </div>
+</div>
+<div class="black_box">
+<div class="footer">
+  <div class="footer_l">
+    <div class="footer_r">
+      <div>
+        <a href="$base/privacy-policy.html">Privacy Policy</a> -
+        (<a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=63406709">edit page</a>)
+   	 (<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=63406709&amp;showComments=true&amp;showCommentArea=true#addcomment">add comment</a>)
+      </div>
+    </div>
+  </div>
+</div>
+</div>
+</div>
+<div class="design_attribution">
+&copy; 2004-2015 The Apache Software Foundation.
+<br>          
+Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation.  All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+<br>
+<a href="http://hiramchirino.com">Graphic Design By Hiram</a>
+</div>
+
+<!-- Camel committers that would like access to the Analytics, send a note to private@camel.apache.org -->
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-25976253-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script>
+
+</body>
+</html>
+
+