数据源组件durid failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

数据源组件durid failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

2017-03-08 23:47:40 4325 1

各位大侠,请教下,我生产环境部署的时候启动tomcat 7.0.69
The web application [] 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.
Mar 08, 2017 6:45:14 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
SEVERE: The web application [] 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.
这个错误,到时我应用初始化加载启动都不成功!请各位大侠指教! O(∩_∩)O谢谢!

取消 提交回答
全部回答(1)
  • 晕品世
    2019-07-17 20:53:26

    tomcat从6.0.24版本之后引入了内存泄漏侦测的功能,当发现系统有垃圾无法回收时,就会输出日志信息。

    Tomcat在关闭应用时,对资源做了一些清理,避免了泄露,这个工作主要是WebappClassLoader里做的,WebappClassLoader也实现自Lifecycle接口,在应用关闭时,会触发其stop方法,其中对JDBC Driver的清理,是clearReferencesJdbc方法,它检查当前WebappClassLoader加载过的,在关闭时未注销掉的JDBC Driver,给出警告信息,并强行将这些Driver反注册掉。如果servlet在初始化时注册了一个Driver,但销毁时未将这个Driver给反注册掉;这时不管是显式的通过命令来stop tomcat,还是因为设置了自动reload,而且恰好检查到应用有变,执行了reload的时候(reload也是对app context进行stop,然后再重新start),就会被tomcat判断为泄露,给出警告并强制反注册Driver。

    要避免这个信息,应用或框架应该自己来保证在销毁时将JDBC Driver反注册掉。例如在destroy方法里:

    @Override

    public void destroy() {
        super.destroy();
        try{
            DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement());
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    因为tomcat自带了DBCP数据库连接池,很多用户在使用DBCP时遇到了这个问题,并建议在 DBCP 的 BasicDataSource的close方法里执行反注册驱动的行为来解决这个警告。但DBCP的开发者认为这个应该是使用者的责任,不愿意接受这种建议。

         关闭reloadable重启该问题未再重现。
    0 0
相关问答

1

回答

NoSQL中访问数据库时如何用代码实现Greating a List of Indexes 呢?

2022-08-17 07:31:21 223浏览量 回答数 1

2

回答

https://developer.aliyun.com/group/cloud?spm=a2c6h

2022-04-01 11:03:17 1110浏览量 回答数 2

1

回答

【OSS】上传大文件时出现“there is no enough disk space for us

2022-01-19 15:15:28 388浏览量 回答数 1

1

回答

How to change the flink web-ui jobServer?

2021-12-02 16:26:15 211浏览量 回答数 1

1

回答

JAVA中Ex t e rn a l i z a b l e 继 承 了 Se r i a l iz

2021-11-16 23:50:51 398浏览量 回答数 1

1

回答

PL/SQL:What is the difference between a mutating .

2021-10-16 18:07:44 431浏览量 回答数 1

1

回答

如何通过livy Programmatic API提交批处理jar Spark作业

2018-12-13 11:24:36 3128浏览量 回答数 1

0

回答

Solving the app market with only grit, hustle, and a Spark cluster

2018-07-29 00:21:33 744浏览量 回答数 0

1

回答

hadoop mr Task process exit with nonzero status of 134

2016-04-11 13:41:18 1996浏览量 回答数 1

1

回答

mongodb : still waiting for a previous migrates data to get cleaned报错

2016-02-21 15:47:42 1740浏览量 回答数 1
+关注
0
文章
1
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载