I guess the problem with your setup may be that the spring context comes up 
before the camelservlet. So it is not available when the servlet endpoint is 
started.

The solution is to start the applicationcontext from the camelservlet. If you 
do it like Willem described it should work

<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/org/apache/camel/component/servlet/camelContext.xml
</param-value>
</init-param>

This is quite ugly though and I hope we can soon provide a better way to work 
with servlets. So you can simply use the contextloaderlistener.

Christian


-----Ursprüngliche Nachricht-----
Von: Gert Villemos [mailto:gville...@yahoo.de]
Gesendet: Mittwoch, 16. Februar 2011 22:21
An: users@camel.apache.org
Betreff: Re: Camel and Tomcat


I must be doing something wrong.

I configure a servlet component in a route. I use an applicationContext.xml 
file to load the application / routes. The route is defined as (an extract);

<route>
        <from uri="servlet:///humsat/commands?servletName=CamelServlet"/>
        <to uri="bean:commandgenerator" />
</route>



The web.xml is as shown below;

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns="http://java.sun.com/xml/ns/javaee";
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"; id="WebApp_ID"
version="2.5">
        <display-name>Humsat (Example Hummingbird Satellite)</display-name>

        <listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

         <servlet>
            <servlet-name>CamelServlet</servlet-name>
            <servlet-class>
                org.apache.camel.component.servlet.CamelHttpTransportServlet
            </servlet-class>
          </servlet>

          <servlet-mapping>
            <servlet-name>CamelServlet</servlet-name>
            <url-pattern>/humsat/*</url-pattern>
          </servlet-mapping>

</web-app>


When I deploy the WAR in tomcat I get the exception shown below. I'm not sure 
which part of the stack trace is really of relevance. I have checked that the 
library containing the Spring JmsUtil (spring-jms 3.0.2) is included in the 
libs of the deployed WAR, and when I extract the jar the class is there. I have 
tried to copy the spring-jms library into the Tomcat library folder, but to no 
wain.

What am I doing wrong?



---- Tomcat stdout ------------------



2011-02-16 21:54:34 Commons Daemon procrun stdout initialized INFO - 
ContextLoader.initWebApplicationContext(187) | Root
WebApplicationContext: initialization started INFO - 
AbstractApplicationContext.prepareRefresh(454) | Refreshing Root
WebApplicationContext: startup date [Wed Feb 16 22:00:25 CET 2011]; root of 
context hierarchy INFO - XmlBeanDefinitionReader.loadBeanDefinitions(315) | 
Loading XML bean definitions from ServletContext resource 
[/WEB-INF/applicationContext.xml] INFO - 
XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean definitions 
from class path resource [humsat-parameters.xml] INFO - 
CamelNamespaceHandler.init(131) | camel-osgi.jar/camel-spring-osgi.jar not 
detected in classpath INFO - XmlBeanDefinitionReader.loadBeanDefinitions(315) | 
Loading XML bean definitions from class path resource [humsat-validator.xml] 
INFO - XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean 
definitions from class path resource [humsat-commands.xml] INFO - 
XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean definitions 
from class path resource [commandgenerator.xml] INFO - 
XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean definitions 
from class path resource [commandreleaser.xml] INFO - 
XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean definitions 
from class path resource [taskexecutor.xml] INFO - 
XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean definitions 
from class path resource [logging.xml] INFO - 
XmlBeanDefinitionReader.loadBeanDefinitions(315) | Loading XML bean definitions 
from class path resource [jsonpublish.xml] INFO - 
DefaultListableBeanFactory.preInstantiateSingletons(538) | Pre-instantiating 
singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@ba679e:
defining beans
[org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,temperature.at.cpu.board,voltage.of.battery,state.of.video.stream,state.of.payload,state.of.payload.deployment,main.satellite.switch,state.of.transmitter,longitude,latitude,elevation,time,delta.time,simulatorRoutes,temperature.at.cpu.board.warning,temperature.at.cpu.board.error,state.of.battery.error,state.of.video.stream.error,state.of.payload.error,validatorRoutes,deploy.payload,deploypayload.check.disable,deploypayload.check.limit,deploypayload.initial.value,deploypayload.check.enable,set.payload.state,payloadstate.argument,payloadstate.check.disable,payloadstate.check.limit,payload.initial.value,payloadstate.check.enable,set.transmitter.state,transmitterstate.argument,transmitterstate.check.disable,transmitterstate.check.limit,transmitterstate.initial.value,transmitterstate.check.enable,send.diagnosis.report,set.time,argument.time,definitions,commandgenerator,springloader,buffer,commandgeneratorRoutes,commandreleaser,stateBuffer,commandreleaserRoutes,taskexecutor,taskexecutorRoutes,loggingRoutes,jsonmapper,jsonPublishRoutes,producer,consumerTemplate,context:beanPostProcessor,context];
root of factory hierarchy
INFO - DefaultCamelContext.doStart(983) | Apache Camel 2.4.0 (CamelContext:
context) is starting
INFO - DefaultCamelContext.createManagementStrategy(1699) | JMX enabled.
Using ManagedManagementStrategy.
INFO - AnnotationTypeConverterLoader.load(66) | Found 5 packages with 17 
@Converter classes to load INFO - DefaultTypeConverter.loadTypeConverters(394) 
| Loaded 155 type converters in 0.583 seconds INFO - Slf4jLog.info(55) | 
jetty-7.1.4.v20100610 INFO - Slf4jLog.info(55) | JSONCommented is deprecated 
INFO - Slf4jLog.info(55) | timeout=240000 INFO - Slf4jLog.info(55) | interval=0 
INFO - Slf4jLog.info(55) | maxInterval=30000 INFO - Slf4jLog.info(55) | 
multiFrameInterval=1500 INFO - Slf4jLog.info(55) | filters=null INFO - 
Slf4jLog.info(55) | Started SelectChannelConnector@0.0.0.0:8086
INFO - Slf4jLog.info(55) | JSONCommented is deprecated INFO - 
FailoverTransport.doReconnect(756) | Successfully connected to
tcp://localhost:61616
INFO - FailoverTransport.doReconnect(756) | Successfully connected to
tcp://localhost:61616
INFO - FailoverTransport.doReconnect(756) | Successfully connected to
tcp://localhost:61616
INFO - FailoverTransport.doReconnect(756) | Successfully connected to
tcp://localhost:61616
ERROR - ContextLoader.initWebApplicationContext(220) | Context initialization 
failed
org.apache.camel.RuntimeCamelException: java.lang.IllegalArgumentException:
Cannot find the deployed servlet, please configure the ServletComponent or 
configure a org.apache.camel.component.servlet.CamelHttpTransportServlet
servlet in web.xml
        at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1126)
        at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:103)
        at
org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:231)
        at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
        at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:301)
        at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:888)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:426)
        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4350)
        at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4816)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:810)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:788)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:558)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:934)
        at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:529)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1377)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown
Source)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
        at
org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1470)
        at
org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:318)
        at
org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:191)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at
org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:562)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source) Caused by: 
java.lang.IllegalArgumentException: Cannot find the deployed servlet, please 
configure the ServletComponent or configure a 
org.apache.camel.component.servlet.CamelHttpTransportServlet servlet in web.xml

        at
org.apache.camel.component.servlet.ServletComponent.getCamelServlet(ServletComponent.java:55)
        at
org.apache.camel.component.servlet.ServletComponent.connect(ServletComponent.java:109)
        at
org.apache.camel.component.http.HttpEndpoint.connect(HttpEndpoint.java:148)
        at
org.apache.camel.component.http.HttpConsumer.doStart(HttpConsumer.java:51)
        at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:56)
        at 
org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:53)
        at
org.apache.camel.impl.DefaultCamelContext.startServices(DefaultCamelContext.java:1189)
        at
org.apache.camel.impl.DefaultCamelContext.doStartRoutes(DefaultCamelContext.java:1357)
        at
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:1261)
        at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:952)
        at
org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:203)
        at
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
        ... 47 more
Exception in thread "DefaultMessageListenerContainer-1"
java.lang.NoClassDefFoundError: org/springframework/jms/support/JmsUtils
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1039)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:907)
        at java.lang.Thread.run(Unknown Source) Caused by: 
java.lang.ClassNotFoundException:
org.springframework.jms.support.JmsUtils
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)
        ... 3 more
Exception in thread "DefaultMessageListenerContainer-1"
java.lang.NoClassDefFoundError: org/springframework/jms/support/JmsUtils
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1039)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:907)
        at java.lang.Thread.run(Unknown Source) Exception in thread 
"DefaultMessageListenerContainer-1"
java.lang.NoClassDefFoundError: org/springframework/jms/support/JmsUtils
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1039)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:907)
        at java.lang.Thread.run(Unknown Source) Exception in thread 
"DefaultMessageListenerContainer-1"
java.lang.NoClassDefFoundError: org/springframework/jms/support/JmsUtils
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1039)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:907)
        at java.lang.Thread.run(Unknown Source) Exception in thread 
"InactivityMonitor WriteCheck"
java.lang.NoClassDefFoundError:
org/apache/activemq/transport/InactivityMonitor$3
        at
org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:136)
        at
org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:110)
        at
org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
        at java.util.TimerThread.mainLoop(Unknown Source)
        at java.util.TimerThread.run(Unknown Source) Caused by: 
java.lang.ClassNotFoundException:
org.apache.activemq.transport.InactivityMonitor$3
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)
        ... 5 more
Exception in thread "ActiveMQ Transport: tcp://localhost/127.0.0.1:61616"
java.lang.NoClassDefFoundError: org/apache/activemq/util/ServiceStopper
        at org.apache.activemq.util.ServiceSupport.stop(ServiceSupport.java:67)
        at
org.apache.activemq.transport.tcp.TcpTransport.stop(TcpTransport.java:500)
        at
org.apache.activemq.transport.InactivityMonitor.stop(InactivityMonitor.java:121)
        at
org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:64)
        at
org.apache.activemq.transport.WireFormatNegotiator.stop(WireFormatNegotiator.java:91)
        at 
org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43)
        at
org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:202)
        at
org.apache.activemq.transport.failover.FailoverTransport$3.onException(FailoverTransport.java:174)
        at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at
org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160)
        at
org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:254)
        at
org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:97)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:190)
        at java.lang.Thread.run(Unknown Source) Caused by: 
java.lang.ClassNotFoundException:
org.apache.activemq.util.ServiceStopper
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)
        ... 14 more
Exception in thread "ActiveMQ Transport: tcp://localhost/127.0.0.1:61616"
java.lang.NoClassDefFoundError: org/apache/activemq/util/ServiceStopper
        at org.apache.activemq.util.ServiceSupport.stop(ServiceSupport.java:67)
        at
org.apache.activemq.transport.tcp.TcpTransport.stop(TcpTransport.java:500)
        at
org.apache.activemq.transport.InactivityMonitor.stop(InactivityMonitor.java:121)
        at
org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:64)
        at
org.apache.activemq.transport.WireFormatNegotiator.stop(WireFormatNegotiator.java:91)
        at 
org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43)
        at
org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:202)
        at
org.apache.activemq.transport.failover.FailoverTransport$3.onException(FailoverTransport.java:174)
        at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at
org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160)
        at
org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:254)
        at
org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:97)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:190)
        at java.lang.Thread.run(Unknown Source) Exception in thread "ActiveMQ 
Transport: tcp://localhost/127.0.0.1:61616"
java.lang.NoClassDefFoundError: org/apache/activemq/util/ServiceStopper
        at org.apache.activemq.util.ServiceSupport.stop(ServiceSupport.java:67)
        at
org.apache.activemq.transport.tcp.TcpTransport.stop(TcpTransport.java:500)
        at
org.apache.activemq.transport.InactivityMonitor.stop(InactivityMonitor.java:121)
        at
org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:64)
        at
org.apache.activemq.transport.WireFormatNegotiator.stop(WireFormatNegotiator.java:91)
        at 
org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43)
        at
org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:202)
        at
org.apache.activemq.transport.failover.FailoverTransport$3.onException(FailoverTransport.java:174)
        at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at
org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160)
        at
org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:254)
        at
org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:97)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:190)
        at java.lang.Thread.run(Unknown Source) Exception in thread "ActiveMQ 
Transport: tcp://localhost/127.0.0.1:61616"
java.lang.NoClassDefFoundError: org/apache/activemq/util/ServiceStopper
        at org.apache.activemq.util.ServiceSupport.stop(ServiceSupport.java:67)
        at
org.apache.activemq.transport.tcp.TcpTransport.stop(TcpTransport.java:500)
        at
org.apache.activemq.transport.InactivityMonitor.stop(InactivityMonitor.java:121)
        at
org.apache.activemq.transport.TransportFilter.stop(TransportFilter.java:64)
        at
org.apache.activemq.transport.WireFormatNegotiator.stop(WireFormatNegotiator.java:91)
        at 
org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43)
        at
org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:202)
        at
org.apache.activemq.transport.failover.FailoverTransport$3.onException(FailoverTransport.java:174)
        at
org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at
org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160)
        at
org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:254)
        at
org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:97)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:190)
        at java.lang.Thread.run(Unknown Source)

--
View this message in context: 
http://camel.465427.n5.nabble.com/Camel-and-Tomcat-tp3386793p3388420.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to