camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Willem Jiang (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CAMEL-2942) CamelHttpTransportServlet.destroy causes java.lang.IllegalArgumentException: Cannot find the deployed servlet
Date Wed, 14 Jul 2010 01:31:52 GMT

    [ https://issues.apache.org/activemq/browse/CAMEL-2942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=60639#action_60639
] 

Willem Jiang commented on CAMEL-2942:
-------------------------------------

Yeah, we need to remove the the ServletMap after the application context is stopped.
Thanks for pointing that out, I will commit the fix shortly.


> CamelHttpTransportServlet.destroy causes java.lang.IllegalArgumentException: Cannot find
the deployed servlet
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-2942
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2942
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-servlet
>    Affects Versions: 2.3.0
>            Reporter: Brian Stiles
>            Assignee: Willem Jiang
>
> CamelHttpTransportServlet.destroy removes the servlet from a static map named CAMEL_SERVLET_MAP
prior to stopping its associated Spring application context.  If that context defines a route
using a servletEndpoint, the route is shutdown AFTER the servlet is removed from the map.
 The shutdown code then looks for the servlet in the map by calling CamelHttpTransportServlet.getCamelServlet.
 The servlet can't be found, and the ensuing exception is logged (copied below).
> It seems to me that CamelHttpTransportServlet.destroy should be defined like this:
>     
>     public void destroy() {
>         // Removal was here
>         if (applicationContext != null) {
>             applicationContext.stop();
>         }
>         // Moved the removal to here
>         CAMEL_SERVLET_MAP.remove(servletName);
>     }
> so that the servlet is removed from the map after the context is stopped.
> I know for sure that removal of the servlet from the map before the context is stopped
causes this problem when my route is shutdown.  I DON'T know for sure that my overall configuration
is correct, though I think it is valid.
> If the above change is not obviously correct, or if there are further questions, please
let me know, and I'll work up a sample that demonstrates the problem to help answer any questions.
> --
> 2010-07-13 09:06:23,918 [Camel Thread 0 - ShutdownTask] WARN  org.apache.camel.impl.DefaultShutdownStrategy
at org.apache.camel.impl.DefaultShutdownStrategy.shutdownNow(DefaultShutdownStrategy.java:219)
>          Error occurred while shutting down route: Consumer[/relay]. This exception will
be ignored.
> 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.disconnect(ServletComponent.java:116)
> 	at org.apache.camel.component.http.HttpEndpoint.disconnect(HttpEndpoint.java:152)
> 	at org.apache.camel.component.http.HttpConsumer.doStop(HttpConsumer.java:56)
> 	at org.apache.camel.impl.ServiceSupport.stop(ServiceSupport.java:86)
> 	at org.apache.camel.impl.ServiceSupport.stop(ServiceSupport.java:107)
> 	at org.apache.camel.util.ServiceHelper.stopService(ServiceHelper.java:100)
> 	at org.apache.camel.impl.DefaultShutdownStrategy.shutdownNow(DefaultShutdownStrategy.java:217)
> 	at org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask.run(DefaultShutdownStrategy.java:413)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message