| package com.doumee; | 
| import javax.servlet.ServletContextEvent; | 
| import javax.servlet.ServletContextListener; | 
| import javax.servlet.annotation.WebListener; | 
| import java.sql.Driver; | 
| import java.sql.DriverManager; | 
| import java.sql.SQLException; | 
| import java.util.Enumeration; | 
| import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread; | 
|   | 
| //@WebListener | 
| public class ContextFinalizer implements ServletContextListener{ | 
|   | 
|     public void contextInitialized(ServletContextEvent sce) {} | 
|   | 
|     public void contextDestroyed(ServletContextEvent sce) { | 
|         Enumeration<Driver> drivers = DriverManager.getDrivers(); | 
|         Driver d = null; | 
|         while (drivers.hasMoreElements()) { | 
|             try { | 
|                 d = drivers.nextElement(); | 
|                 DriverManager.deregisterDriver(d); | 
|             } catch (SQLException ex) { | 
|             } | 
|         } | 
|         try { | 
|             // 注意:mysql8版本的jar好像shutdown方法私有了,只能调用checkedShutdown或uncheckedShutdown | 
|             AbandonedConnectionCleanupThread.checkedShutdown(); | 
|         } catch ( Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
| } |