Tomcat fails to start because of jdbc driver loading

前端 未结 4 979
醉梦人生
醉梦人生 2020-12-08 22:36

Here\'s the relevant portion of the tomcat startup log:

SEVERE: Context [/f360] startup failed due to previous errors
Apr 8, 2010 6:45:56 PM org.apache.catal         


        
相关标签:
4条回答
  • 2020-12-08 23:02

    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) {}    
    

    }

    0 讨论(0)
  • 2020-12-08 23:11

    Sometimes, especially when using Spring application on Tomcat, the error message is misleading - when there is no relation to any JDBC driver error at all but only a failure of some application BEAN init-method (or @PostConstruct). The error stack trace is hidden and appears only in tomcat/logs/localhost.xxx file. Just be aware of this behavior. It costed me a lot of time.

    Regards, Yosi Lev

    0 讨论(0)
  • 2020-12-08 23:14

    The SEVERE messages regarding JDBC drivers are caused by a DBCP issue. See DBCP-332

    0 讨论(0)
  • 2020-12-08 23:15

    If it's the DBCP problem then stop tomcat, kill any remaining process (in case you have more than one tomcat running), delete the tomcat temp directory (and perhaps work directory) and try again.

    0 讨论(0)
提交回复
热议问题