Tomcat常见问题解决 - The web application appears to have started a thread named [FileW

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 03:22   61   0

现象:
停止Tomcat时,catalina.log里输出提示信息:

SEVERE: The web application [/xxx] appears to have started a thread named [FileWatchdog] but has failed to stop it. This is very likely to create a memory leak.

原因:

导致这个错误的原因是在web.xml里配置了:

<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>3000</param-value>
</context-param>

所以,启动Tomcat的同时启动了一个检测log4j.properties变化的线程,但在1.2.x版本的log4j实现中,这个线程无法被interrupt,所以会出现这个错误。

事实上,这个错误在2002年的时候就出现了,只不过一直没有被修复,详情可参考:

ASF Bugzilla – Bug 4913 org.apache.log4j.helpers.FileWatchdog should allow external interrupt()

log4j官方原先计划在1.3版本中修复,但后来,就没有后来的1.3版本了,直接到了2.x版本。1.2.x版本和2.x版本之间不兼容,无法平滑升级。

解决办法:
1、将log4j升级到2.x版本;
2、去掉自动检测这个配置(事实上95%以上的场景都没有必要);
3、自己写个ServletContextListener强行中止该线程。
---------------------
作者:ego_ecust
来源:CSDN
原文:https://blog.csdn.net/ego_ecust/article/details/65442622?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP