but failed to unregister it when the web application was stopped

起因

某天,正式环境的应用启动失败,无法访问。

打开 catalina 日志,看到如下可疑日志。

在这里插入图片描述
在这里插入图片描述

WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [dgyfyweb] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

看到的第一个错误,是说应用已经注册了 JDBC,但是当应用停止(启动失败)时无法注销,防止内存泄漏,JDBC 已强制注销。

第一见这个 warning ,所以以为是数据库配置的,检查了一遍,然后也百度了一下这个问题,没任何结果。

再仔细往下看,看到第二种 warning。

WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [dgyfyweb] appears to have started a thread named [weixCache.data] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:

意思是有个线程已经启动了,但无法停止。看这个线程名是项目中的 ehcache 问题。

由于一个 tomcat 部署了三个 tomcat,所以怀疑是不是 ehcache 冲突了。但是后来修改了 ehcache 还是不行。

然后就无计可施了,下了个结论是应用冲突,通过分应用到不同 tomcat 看看。

经过

然而将这个启动有问题的应用放到独立的 tomcat,发现还是同样的报错。

无意间打开了 localhost 启动日志,看到了一个异常。

java.sql.SQLException: Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp

查了一下这个异常就是数据库时间段不支持存储 ‘0000-00-00 00:00:00’,看了一下抛异常的代码行数,是一处加载数据库到 ehcache 中,确实涉及到了 ehcache。

排查了表中,确实在 Timestamp 的字段上存在 ‘0000-00-00 00:00:00’ 值,修改之后重启,发现应用启动成功,终于可以访问了。

结果

catalina.log 并不能完全解决问题。

以往 tomcat 启动不成功,都是通过查看 catalina 日志,结果大部分问题都能展示出来并且能够解决。

然而这次遇到的问题,但看 catalina 文件毫无收获,可能是我没发现。

要不是偶然打开了 localhost 日志,怕是这个问题要托好久了。

所以说,排查 tomcat 启动问题,不要漏了 localhost 日志。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
12-Jul-2023 18:36:28.896 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file 12-Jul-2023 18:36:28.898 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/setting] startup failed due to previous errors 2023-07-12 18:36:28,899 [// - - ] INFO org.springframework.web.context.support.XmlWebApplicationContext - Closing Root WebApplicationContext: startup date [Wed Jul 12 18:36:27 CST 2023]; root of context hierarchy 2023-07-12 18:36:28,900 [// - - ] INFO org.springframework.cache.ehcache.EhCacheManagerFactoryBean - Shutting down EhCache CacheManager 12-Jul-2023 18:36:28.908 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [setting] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 12-Jul-2023 18:36:28.908 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [setting] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:40)
07-13
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值