问题
当使用druid数据库连接池,使用连接池重新部署项目后,会控制台会报下面警告
其实出现这个也不会影响我们web项目的使用,只是警告看着惹人厌
解决方式
- 解决过程使用Listener监听器
- 首先自己创建一个类,用于实现ServletContextListener接口,重写contextDestoryed方法,
- 该过程可以使用@WebListener 使用户注解注册 也可以在web.xml文件中配,在这里使用注解实现
<listener>
<listener-class>com.blank.listener.MyListener</listener-class>
</listener>
代码如下:
/**
* @author Blank
* @Project myweb
* @Package com.blank.listener
* @date 2021/4/25 11:17
* @description -------------nice-------------
* @belief ------------永无bug------------
*/
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("webService stop");
try {
//1 关闭DriverManger中的驱动
while(DriverManager.getDrivers().hasMoreElements()) {
DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement());
}
System.out.println("jdbc Driver close");
//2 关闭线程(失效连接清理线程)
AbandonedConnectionCleanupThread.checkedShutdown();
//3 关闭连接池
DruidDataSource dataSource= (DruidDataSource) DataSourceUtils.getDataSource();
dataSource.close();
System.out.println("clean thread success");
} catch (SQLException e) {
e.printStackTrace();
}
}