【发布时间】:2013-03-22 09:21:24
【问题描述】:
在 tomcat 7.0 + sping MVC 中使用 Tomcat 管理器,Webapp reload 会导致 apachelifecycle 异常。一切正常启动,正常启动时工作正常。在启动重新加载 webapp 后,我们使用 tomcat 管理器。在 tomcat 管理器中,单击重新加载按钮后,它会显示重新加载成功(这会启用开始按钮)。单击 tomcat 中的开始按钮后,它会引发 apachelifecyle 异常。请帮忙...
2013-03-27 01:13:39,153 [http-bio-443-exec-24] 错误标准上下文 - 异常停止具有名称的上下文 [/webtest] org.apache.catalina.LifecycleException:无法停止组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/webtest]] 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:236) 在 org.apache.catalina.core.StandardContext.reload(StandardContext.java:3913) 在 org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:953) 在 org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:364) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知 来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知 来源)在 java.lang.Thread.run(Unknown Source) 引起: org.apache.catalina.LifecycleException:无法停止组件 [WebappLoader[/webtest]] 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:236) 在 org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5521) 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) ... 24 更多原因:java.lang.NullPointerException at org.apache.catalina.loader.WebappClassLoader.loadedByThisOrChild(WebappClassLoader.java:2598) 在 org.apache.catalina.loader.WebappClassLoader.checkThreadLocalMapForLeaks(WebappClassLoader.java:2515) 在 org.apache.catalina.loader.WebappClassLoader.checkThreadLocalsForLeaks(WebappClassLoader.java:2455) 在 org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1996) 在 org.apache.catalina.loader.WebappClassLoader.stop(WebappClassLoader.java:1902) 在 org.apache.catalina.loader.WebappLoader.stopInternal(WebappLoader.java:661) 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) ... 26 更多 2013-03-27 01:13:39,155 [http-bio-443-exec-24] 信息 LifecycleBase - 在组件上调用了 stop() 方法 [org.apache.catalina.deploy.NamingResources@2d204c14] 在 stop() 之后 已经被调用了。第二次调用将被忽略。
【问题讨论】:
-
...按照他们的方式,Java 已针对
NullPointerException的生成进行了优化, -
我们通过更改处理此问题的 tomcat 代码来解决此问题,请参阅下面的评论。
标签: spring exception tomcat spring-mvc reload