You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Cappa Roberto <ro...@guest.telecomitalia.it> on 2010/07/02 08:38:22 UTC

Camel web console and "servlet" component

Hi, I'm trying to create a Camel configuration inside the camel-web war (in order to use camel console), with a "from" clause based on SERVLET component. To do this, I've added the camel-servlet dependencies in the war and I've added the servlet configuration in web.xml. The servlet configuration in web.xml needs contextConfigLocation param, and it stars a separate instance of camel context. Now, I'm in this situation:

- If I add the servlet configuration, It starts another instance of the camel context, and it isn't monitored by the console that is connected to another context.

- If I don't add the servlet configuration, I'm unable to use the servlet component.

Where I'm wrong?

Thanks. 

Re: R: Camel web console and "servlet" component

Posted by Willem Jiang <wi...@gmail.com>.
The ServletComopnent need to locate the CamelHttpTransportServlet when 
the servlet endpoint is started, maybe you can set the route with 
notAutoStart, and start the route from the console to workaround the 
below issue.

Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang

Cappa Roberto wrote:
> Hi, I've already tried this solution, but if I remove the contextConfigLocation init-param, this exception is thrown:
> 
> [11:11:04,281 ERROR] ContextLoader.initWebApplicationContext(215) - Context init
> ialization failed
> org.apache.camel.RuntimeCamelException: java.lang.IllegalArgumentException: Cann
> ot find the deployed servlet, please configure the ServletComponent or configure
>  a org.apache.camel.component.servlet.CamelHttpTransportServlet servlet in web.x
> ml
>         at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHe
> lper.java:1111)
>         at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringC
> amelContext.java:103)
>         at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(Ca
> melContextFactoryBean.java:665)
>         at org.springframework.context.event.SimpleApplicationEventMulticaster$1
> .run(SimpleApplicationEventMulticaster.java:78)
>         at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecut
> or.java:49)
>         at org.springframework.context.event.SimpleApplicationEventMulticaster.m
> ulticastEvent(SimpleApplicationEventMulticaster.java:76)
>         at org.springframework.context.support.AbstractApplicationContext.publis
> hEvent(AbstractApplicationContext.java:274)
>         at org.springframework.context.support.AbstractApplicationContext.finish
> Refresh(AbstractApplicationContext.java:736)
>         at org.springframework.context.support.AbstractApplicationContext.refres
> h(AbstractApplicationContext.java:383)
>         at org.springframework.web.context.ContextLoader.createWebApplicationCon
> text(ContextLoader.java:255)
>         at org.springframework.web.context.ContextLoader.initWebApplicationConte
> xt(ContextLoader.java:199)
>         at org.springframework.web.context.ContextLoaderListener.contextInitiali
> zed(ContextLoaderListener.java:45)
>         at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.
> java:548)
>         at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>         at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.jav
> a:1239)
>         at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:
> 517)
>         at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:466
> )
>         at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6Plug
> inWebAppContext.java:124)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
> 50)
>         at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection
> .java:152)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHan
> dlerCollection.java:156)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
> 50)
>         at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection
> .java:152)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
> 50)
>         at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:
> 130)
>         at org.mortbay.jetty.Server.doStart(Server.java:222)
>         at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
> 50)
>         at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.
> java:132)
>         at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMo
> jo.java:441)
>         at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.
> java:383)
>         at org.mortbay.jetty.plugin.Jetty6RunWar.execute(Jetty6RunWar.java:67)
>         at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
> nManager.java:483)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
> ultLifecycleExecutor.java:678)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandalone
> Goal(DefaultLifecycleExecutor.java:553)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
> ltLifecycleExecutor.java:523)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
> dleFailures(DefaultLifecycleExecutor.java:371)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
> ts(DefaultLifecycleExecutor.java:332)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
> fecycleExecutor.java:181)
>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>         at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>         at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
> 
>         at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> 
> 
> Thanks
> ________________________________________
> Da: Willem Jiang [willem.jiang@gmail.com]
> Inviato: venerdì 2 luglio 2010 9.20
> A: users@camel.apache.org
> Oggetto: Re: Camel web console and "servlet" component
> 
> When you use the servlet component, you just need to make sure the
> servlet start before the servlet component.
> 
> Can you try to keep the sevlet configuration and don't use
> contextConfigLocation to specify your camel context ?
> 
> Put the camelContext into applicationContext, or modify it within the
> web console.
> 
> Willem
> ----------------------------------
> Apache Camel, Apache CXF committer
> Open SOA http://www.fusesource.com
> Blog http://willemjiang.blogspot.com
> Tiwtter http://twitter.com/willemjiang
> 
> Cappa Roberto wrote:
>> Hi, I'm trying to create a Camel configuration inside the camel-web war (in order to use camel console), with a "from" clause based on SERVLET component. To do this, I've added the camel-servlet dependencies in the war and I've added the servlet configuration in web.xml. The servlet configuration in web.xml needs contextConfigLocation param, and it stars a separate instance of camel context. Now, I'm in this situation:
>>
>> - If I add the servlet configuration, It starts another instance of the camel context, and it isn't monitored by the console that is connected to another context.
>>
>> - If I don't add the servlet configuration, I'm unable to use the servlet component.
>>
>> Where I'm wrong?
>>
>> Thanks.
> 
> 


R: Camel web console and "servlet" component

Posted by Cappa Roberto <ro...@guest.telecomitalia.it>.
Hi, I've already tried this solution, but if I remove the contextConfigLocation init-param, this exception is thrown:

[11:11:04,281 ERROR] ContextLoader.initWebApplicationContext(215) - Context init
ialization failed
org.apache.camel.RuntimeCamelException: java.lang.IllegalArgumentException: Cann
ot find the deployed servlet, please configure the ServletComponent or configure
 a org.apache.camel.component.servlet.CamelHttpTransportServlet servlet in web.x
ml
        at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHe
lper.java:1111)
        at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringC
amelContext.java:103)
        at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(Ca
melContextFactoryBean.java:665)
        at org.springframework.context.event.SimpleApplicationEventMulticaster$1
.run(SimpleApplicationEventMulticaster.java:78)
        at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecut
or.java:49)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.m
ulticastEvent(SimpleApplicationEventMulticaster.java:76)
        at org.springframework.context.support.AbstractApplicationContext.publis
hEvent(AbstractApplicationContext.java:274)
        at org.springframework.context.support.AbstractApplicationContext.finish
Refresh(AbstractApplicationContext.java:736)
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:383)
        at org.springframework.web.context.ContextLoader.createWebApplicationCon
text(ContextLoader.java:255)
        at org.springframework.web.context.ContextLoader.initWebApplicationConte
xt(ContextLoader.java:199)
        at org.springframework.web.context.ContextLoaderListener.contextInitiali
zed(ContextLoaderListener.java:45)
        at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.
java:548)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
        at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.jav
a:1239)
        at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:
517)
        at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:466
)
        at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6Plug
inWebAppContext.java:124)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
        at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection
.java:152)
        at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHan
dlerCollection.java:156)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
        at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection
.java:152)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
        at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:
130)
        at org.mortbay.jetty.Server.doStart(Server.java:222)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
        at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.
java:132)
        at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMo
jo.java:441)
        at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.
java:383)
        at org.mortbay.jetty.plugin.Jetty6RunWar.execute(Jetty6RunWar.java:67)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:483)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:678)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandalone
Goal(DefaultLifecycleExecutor.java:553)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:523)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:371)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:332)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:181)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)

        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)


Thanks
________________________________________
Da: Willem Jiang [willem.jiang@gmail.com]
Inviato: venerdì 2 luglio 2010 9.20
A: users@camel.apache.org
Oggetto: Re: Camel web console and "servlet" component

When you use the servlet component, you just need to make sure the
servlet start before the servlet component.

Can you try to keep the sevlet configuration and don't use
contextConfigLocation to specify your camel context ?

Put the camelContext into applicationContext, or modify it within the
web console.

Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang

Cappa Roberto wrote:
> Hi, I'm trying to create a Camel configuration inside the camel-web war (in order to use camel console), with a "from" clause based on SERVLET component. To do this, I've added the camel-servlet dependencies in the war and I've added the servlet configuration in web.xml. The servlet configuration in web.xml needs contextConfigLocation param, and it stars a separate instance of camel context. Now, I'm in this situation:
>
> - If I add the servlet configuration, It starts another instance of the camel context, and it isn't monitored by the console that is connected to another context.
>
> - If I don't add the servlet configuration, I'm unable to use the servlet component.
>
> Where I'm wrong?
>
> Thanks.


Re: Camel web console and "servlet" component

Posted by Willem Jiang <wi...@gmail.com>.
When you use the servlet component, you just need to make sure the 
servlet start before the servlet component.

Can you try to keep the sevlet configuration and don't use 
contextConfigLocation to specify your camel context ?

Put the camelContext into applicationContext, or modify it within the 
web console.

Willem
----------------------------------
Apache Camel, Apache CXF committer
Open SOA http://www.fusesource.com
Blog http://willemjiang.blogspot.com
Tiwtter http://twitter.com/willemjiang

Cappa Roberto wrote:
> Hi, I'm trying to create a Camel configuration inside the camel-web war (in order to use camel console), with a "from" clause based on SERVLET component. To do this, I've added the camel-servlet dependencies in the war and I've added the servlet configuration in web.xml. The servlet configuration in web.xml needs contextConfigLocation param, and it stars a separate instance of camel context. Now, I'm in this situation:
> 
> - If I add the servlet configuration, It starts another instance of the camel context, and it isn't monitored by the console that is connected to another context.
> 
> - If I don't add the servlet configuration, I'm unable to use the servlet component.
> 
> Where I'm wrong?
> 
> Thanks.