Author: buildbot Date: Thu Feb 7 19:18:34 2013 New Revision: 849802 Log: Production update by buildbot for camel
Modified: websites/production/camel/content/cache/main.pageCache websites/production/camel/content/servlet-tomcat-no-spring-example.html websites/production/camel/content/servletlistener-component.html Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/servlet-tomcat-no-spring-example.html ============================================================================== --- websites/production/camel/content/servlet-tomcat-no-spring-example.html (original) +++ websites/production/camel/content/servlet-tomcat-no-spring-example.html Thu Feb 7 19:18:34 2013 @@ -96,7 +96,7 @@ The example contains a Camel routes that <h3><a shape="rect" name="ServletTomcatNoSpringExample-Implementation"></a>Implementation</h3> <p>In the <tt>web.xml</tt> file in the <tt>src/main/webapp/WEB-INF</tt> folder we have both a CamelServlet and CamelContextListener defined.<br clear="none"> -The CamelServlet is mandatory to do when using the <a shape="rect" href="servlet.html" title="SERVLET">Servlet</a> component. And the <tt>CamelServletContextListener</tt> is used to bootstrap the Camel application. </p> +The CamelServlet is mandatory to do when using the <a shape="rect" href="servlet.html" title="SERVLET">Servlet</a> component. And the <tt>JndiCamelServletContextListener</tt> is used to bootstrap the Camel application. </p> <div class="code panel" style="border-width: 1px;"><div class="codeHeader panelHeader" style="border-bottom-width: 1px;"><b>web.xml</b></div><div class="codeContent panelContent"> <pre class="code-xml"><web-app version=<span class="code-quote">"2.4"</span> xmlns=<span class="code-quote">"http://java.sun.com/xml/ns/j2ee"</span> @@ -121,7 +121,7 @@ The CamelServlet is mandatory to do when <span class="code-tag"><span class="code-comment"><!-- the listener that kick-starts Camel --></span></span> <span class="code-tag"><listener></span> - <span class="code-tag"><listener-class></span>org.apache.camel.component.servletlistener.CamelServletContextListener<span class="code-tag"></listener-class></span> + <span class="code-tag"><listener-class></span>org.apache.camel.component.servletlistener.JndiCamelServletContextListener<span class="code-tag"></listener-class></span> <span class="code-tag"></listener></span> <span class="code-tag"><span class="code-comment"><!-- Camel servlet used in the Camel application --></span></span> Modified: websites/production/camel/content/servletlistener-component.html ============================================================================== --- websites/production/camel/content/servletlistener-component.html (original) +++ websites/production/camel/content/servletlistener-component.html Thu Feb 7 19:18:34 2013 @@ -99,6 +99,10 @@ Though Servlet 2.x requires to use a web <h3><a shape="rect" name="ServletListenerComponent-Using"></a>Using</h3> +<p>You would need to chose one of the following implementations of the abstract class <tt>org.apache.camel.component.servletlistener.CamelServletContextListener</tt>.</p> +<ul class="alternate" type="square"><li><tt>JndiCamelServletContextListener</tt> which uses the <tt>JndiRegistry</tt> to leverage JNDI for its registry.</li><li><tt>SimpleCamelServletContextListener</tt> which uses the <tt>SimpleRegistry} to leverage a {{java.util.Map</tt> as its registry.</li></ul> + + <p>To use this you need to configure the <tt>org.apache.camel.component.servletlistener.CamelServletContextListener</tt> in the <tt>WEB-INF/web.xml</tt> file as shown below:</p> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent"> <pre class="code-xml"><span class="code-tag"><web-app></span> @@ -125,7 +129,7 @@ Though Servlet 2.x requires to use a web <span class="code-tag"><span class="code-comment"><!-- register Camel as a listener so we can bootstrap Camel when the web application starts --></span></span> <span class="code-tag"><listener></span> - <span class="code-tag"><listener-class></span>org.apache.camel.component.servletlistener.CamelServletContextListener<span class="code-tag"></listener-class></span> + <span class="code-tag"><listener-class></span>org.apache.camel.component.servletlistener.SimpleCamelServletContextListener<span class="code-tag"></listener-class></span> <span class="code-tag"></listener></span> <span class="code-tag"></web-app></span> @@ -263,16 +267,16 @@ In the web.xml you refer to the XML file </div></div> -<h3><a shape="rect" name="ServletListenerComponent-JNDIandCamelRegistry"></a>JNDI and Camel <a shape="rect" href="registry.html" title="Registry">Registry</a></h3> +<h3><a shape="rect" name="ServletListenerComponent-JNDIorSimpleasCamelRegistry"></a>JNDI or Simple as Camel <a shape="rect" href="registry.html" title="Registry">Registry</a></h3> -<p>This component uses JNDI/<tt>javax.naming.Context</tt> using the <tt>org.apache.camel.util.jndi.JndiContext</tt> as the <a shape="rect" href="registry.html" title="Registry">Registry</a> implementation.<br clear="none"> +<p>This component uses either JNDI or Simple as the <a shape="rect" href="registry.html" title="Registry">Registry</a>.<br clear="none"> This allows you to lookup <a shape="rect" href="bean.html" title="Bean">Bean</a>s and other services in JNDI, and as well to bind and unbind your own <a shape="rect" href="bean.html" title="Bean">Bean</a>s.</p> -<p>This is done from Java code by implementing the <tt>org.apache.camel.component.servletlistener.CamelContextLifecycle</tt>. There is a base class <tt>org.apache.camel.component.servletlistener.CamelContextLifecycleSupport</tt> which is easier to extend, than implementing the interface.</p> +<p>This is done from Java code by implementing the <tt>org.apache.camel.component.servletlistener.CamelContextLifecycle</tt>.</p> -<h4><a shape="rect" name="ServletListenerComponent-UsingcustomCamelContextLifecycleSupport"></a>Using custom CamelContextLifecycleSupport</h4> +<h4><a shape="rect" name="ServletListenerComponent-UsingcustomCamelContextLifecycle"></a>Using custom CamelContextLifecycle</h4> -<p>In the code below we use the callbacks <tt>beforeStart</tt> and <tt>afterStop</tt> to enlist our custom bean in the JNDI <a shape="rect" href="registry.html" title="Registry">Registry</a>, and as well to cleanup when we stop.</p> +<p>In the code below we use the callbacks <tt>beforeStart</tt> and <tt>afterStop</tt> to enlist our custom bean in the Simple <a shape="rect" href="registry.html" title="Registry">Registry</a>, and as well to cleanup when we stop.</p> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent"> <pre class="code-java">/** * Our custom {@link CamelContextLifecycle} which allows us to enlist beans in the {@link JndiContext} @@ -280,24 +284,34 @@ This allows you to lookup <a shape="rect * <p/> * We can of course also <span class="code-keyword">do</span> other kind of custom logic as well. */ -<span class="code-keyword">public</span> class MyLifecycle <span class="code-keyword">extends</span> CamelContextLifecycleSupport { +<span class="code-keyword">public</span> class MyLifecycle <span class="code-keyword">implements</span> CamelContextLifecycle<SimpleRegistry> { @Override - <span class="code-keyword">public</span> void beforeStart(ServletCamelContext camelContext, JndiContext jndi) <span class="code-keyword">throws</span> Exception { + <span class="code-keyword">public</span> void beforeStart(ServletCamelContext camelContext, SimpleRegistry registry) <span class="code-keyword">throws</span> Exception { <span class="code-comment">// enlist our bean(s) in the registry -</span> jndi.bind(<span class="code-quote">"myBean"</span>, <span class="code-keyword">new</span> HelloBean()); +</span> registry.put(<span class="code-quote">"myBean"</span>, <span class="code-keyword">new</span> HelloBean()); } @Override - <span class="code-keyword">public</span> void afterStop(ServletCamelContext camelContext, JndiContext jndi) <span class="code-keyword">throws</span> Exception { + <span class="code-keyword">public</span> void afterStart(ServletCamelContext camelContext, SimpleRegistry registry) <span class="code-keyword">throws</span> Exception { + <span class="code-comment">// noop +</span> } + + @Override + <span class="code-keyword">public</span> void beforeStop(ServletCamelContext camelContext, SimpleRegistry registry) <span class="code-keyword">throws</span> Exception { + <span class="code-comment">// noop +</span> } + + @Override + <span class="code-keyword">public</span> void afterStop(ServletCamelContext camelContext, SimpleRegistry registry) <span class="code-keyword">throws</span> Exception { <span class="code-comment">// unbind our bean when Camel has been stopped -</span> jndi.unbind(<span class="code-quote">"myBean"</span>); +</span> registry.remove(<span class="code-quote">"myBean"</span>); } } </pre> </div></div> -<p>Then we need to register this class in the web.xml file as shown below, using the parameter name "CamelContextLifecycle". The value must be a FQN which refers to the class implementing the <tt>org.apache.camel.component.servletlistener.CamelContextLifecycleSupport</tt> interface.</p> +<p>Then we need to register this class in the web.xml file as shown below, using the parameter name "CamelContextLifecycle". The value must be a FQN which refers to the class implementing the <tt>org.apache.camel.component.servletlistener.CamelContextLifecycle</tt> interface.</p> <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent"> <pre class="code-xml"> <span class="code-tag"><context-param></span> @@ -321,7 +335,7 @@ This allows you to lookup <a shape="rect </pre> </div></div> -<div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1">In the CamelContextLifecycleSupport implementation you can of course do any kind of code in the callback methods. There is 4 callbacks for before/after starting <a shape="rect" href="camelcontext.html" title="CamelContext">CamelContext</a>, and as well for before/after stopping as well.</td></tr></table></div> +<p><b>Important:</b> If you use <tt>org.apache.camel.component.servletlistener.JndiCamelServletContextListener</tt> then the <tt>CamelContextLifecycle</tt> must use the <tt>JndiRegistry</tt> as well. And likewise if the servlet is <tt>org.apache.camel.component.servletlistener.SimpleCamelServletContextListener</tt> then the <tt>CamelContextLifecycle</tt> must use the <tt>SimpleRegistry</tt> </p> <h3><a shape="rect" name="ServletListenerComponent-SeeAlso"></a>See Also</h3> <ul class="alternate" type="square"><li><a shape="rect" href="servlet.html" title="SERVLET">SERVLET</a></li><li><a shape="rect" href="servlet-tomcat-example.html" title="Servlet Tomcat Example">Servlet Tomcat Example</a></li><li><a shape="rect" href="servlet-tomcat-no-spring-example.html" title="Servlet Tomcat No Spring Example">Servlet Tomcat No Spring Example</a></li></ul>