首页 > 代码库 > java一些jar包的bug(不定期更新)
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(不定期更新)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。