且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

由于jdbc驱动加载,Tomcat无法启动

更新时间:2022-06-05 17:09:35

显然这是 JDBC 提供程序堆栈中的一个错误.但无论如何,我在 Jetty 中使用了一些类似的代码:

Clearly this is a bug in the JDBC provider stack. But anyway, I used some similar code in Jetty:

public class CleanupContextListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        Logger logger = Logger.getLogger("CleanupContextListener");
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        while (drivers.hasMoreElements()) {
            Driver driver = drivers.nextElement();
            ClassLoader driverclassLoader = driver.getClass().getClassLoader();
            ClassLoader thisClassLoader = this.getClass().getClassLoader();
            if (driverclassLoader != null && thisClassLoader != null &&  driverclassLoader.equals(thisClassLoader)) {
                try {
                    logger.warn("Deregistering: " + driver);
                    DriverManager.deregisterDriver(driver);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {}    
}