zoukankan      html  css  js  c++  java
  • 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而导致系统的速度变慢,正在进行测试)。

  • 相关阅读:
    c#缓存技术(Dictionary)
    反射Reflection创建
    SQL Server手注之延时型盲注
    MySQL——事务
    MySQL——NULL值处理
    MySQL——连接的使用
    SQL server手注之报错注入
    SQL Serves手注之联合查询注入
    MySQL手注之ROOT权限处理
    MySQL——正则表达式
  • 原文地址:https://www.cnblogs.com/sm21312/p/6529352.html
Copyright © 2011-2022 走看看