gpt4 book ai didi

java.lang.IllegalStateException : Timer already cancelled when webapp redeploys on tomcat 错误

转载 作者:行者123 更新时间:2023-11-30 05:58:52 34 4
gpt4 key购买 nike

当应用程序重新部署时在 struts2 webapp 中使用 Hibernate 我在重新部署后尝试访问页面时遇到此错误。

java.lang.IllegalStateException: Timer already cancelled.

在重新部署 tomcat 后,会记录以下输出,这表明问题的原因是当 Web 应用程序的第一个实例关闭时,Hibernate 没有正确关闭。

Oct 15, 2010 8:58:34 PM org.apache.catalina.loader.WebappClassLoader clearReferencesStopTimerThread
SEVERE: A web application appears to have started a TimerThread named [Timer-0] via the java.util.Timer API but has failed to stop it. To prevent a memory leak, the timer (and hence the associated thread) has been forcibly cancelled.

我在 contextDestroyed 方法中添加了一个带有以下内容的 ContextListener,但这没有任何效果。

@Override
public void contextDestroyed(ServletContextEvent arg0) {

HibernateUtil.getSessionFactory().close();

}

还有什么我可以做的来防止这个错误吗?

最佳答案

此警告是 memory leak protection 的一部分它随 Tomcat 6.0.26 一起提供。在这个特定问题中,您似乎正在使用 commons-pool 作为连接池。它没有正确终止计时器线程。这已被报告为错误:issue POOL-161 .尚未修复。

它实际上并没有伤害。 Tomcat 正在做它的工作,只是接受这些警告。如果他们真的很困扰你,你也可以考虑用另一个替换连接池。我推荐 tomcat-jdbc .

另见:

关于java.lang.IllegalStateException : Timer already cancelled when webapp redeploys on tomcat 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3945689/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com