【问题标题】:Using Tomcat manager in tomcat 7.0 + spring MVC, Webapp reload gives apachelifecycle exception在tomcat 7.0 + spring MVC中使用Tomcat manager,Webapp reload给apachelifecycle异常
【发布时间】: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


【解决方案1】:

这个组件是什么?

The stop() method was called on component [org.apache.catalina.deploy.NamingResources@2d204c14] 

我会试着弄清楚。也许是 JMX 或启用进一步的日志记录或调试 Tomcat。

【讨论】:

  • 谢谢@Michael-O...在将日志设置为调试时,即使tomcat说它已经重新加载了webapp,它看起来也没有正确地做到这一点...... 2013-04- 01 10:10:48,720 [http-bio-443-exec-6] 错误 StandardContext - 异常停止名称为 [/webtest] org.apache.catalina.LifecycleException 的上下文:无法停止组件 [StandardEngine [Catalina].StandardHost [localhost ].StandardContext[/webtest]]
  • 如果是这样,以调试模式启动 Tomcat,使用 Eclipse(或其他)附加到 JVM 并进入 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:236)
  • :我在tomcat代码库(7.0.30)中看到一个空指针,这可能是根本原因吗?
  • java.lang.NullPointerException at org.apache.catalina.loader.WebappClassLoader.loadedByThisOrChild(WebappClassLoader.java:2598) at org.apache.catalina.loader.WebappClassLoader.checkThreadLocalMapForLeaks(WebappClassLoader.java:2515) ) 在 org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1996) 的 org.apache.catalina.loader.WebappClassLoader.checkThreadLocalsForLeaks(WebappClassLoader.java:2455)
  • 在 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)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 2011-03-31
  • 2011-03-03
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多