java一些jar包的bug(不定期更新)

Posted 狂奔的呙牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java一些jar包的bug(不定期更新)相关的知识,希望对你有一定的参考价值。

c3p0-0.9.5.jar 连接池jar包,常用于web项目,关闭连接池时,没有注销所有的driver

解决:可声明一个ServletContextListener的子类,重写contextDestroyed(ServletContextEvent arg0)方法并加入如下代码

Enumeration ds = DriverManager.getDrivers();
try {
    while (ds.hasMoreElements()) {
        Driver d = (Driver)ds.nextElement();
        DriverManager.deregisterDriver(d);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

可以关闭在项目运行中注册的driver,如此可以解决项目关闭时产生的这个报错:

The web application [/*] registered the JBDC 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.

当然,也可以修改jar的源码,只需要修改com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource类中的close()方法,在方法的第一行加入以上代码即可(因为这个是修改datasource中的关闭方法,所以不知道会不会在系统运行过程中触发,毕竟springMVC中配置了close()方法,所以这个方式不知道会不会因为反复注册driver而导致系统的速度变慢,正在进行测试)。

以上是关于java一些jar包的bug(不定期更新)的主要内容,如果未能解决你的问题,请参考以下文章

Python异常及处理方法总结(21.4定期更新)

备份jar包的一些坑

java jar包的路径

jar包

关于java动态加载jar的问题?

关于 jar 包的更新并打包的总结