的Tomcat启动失败,因为JDBC驱动程序加载的
这里的tomcat的启动日志的相关部分:的Tomcat启动失败,因为JDBC驱动程序加载的
SEVERE: Context [/f360] startup failed due to previous errors
Apr 8, 2010 6:45:56 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: A web application registered the JBDC driver [org.apache.derby.jdbc.ClientDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Apr 8, 2010 6:45:56 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: A web application registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Apr 8, 2010 6:45:56 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: A web application registered the JBDC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
,它会导致的问题是,它基本上使web应用程序无法正常启动。
任何想法如何解决这个问题?
有关JDBC驱动程序的SEVERE消息是由DBCP问题引起的。请参阅DBCP-332
DBCP部分在哪里? Tomcat的?我有Tomcat6/JDK6/MacOS X的上述错误,但它(相同的应用程序,使用postgres + jdbc)在Tomcat/JDK6/WinXP上运行正常。谢谢! – 2011-03-08 07:27:12
感谢您的参考rgielen。这个解释是有道理的。 – 2015-09-07 13:54:46
如果是DBCP问题,请停止tomcat,终止其他进程(如果您有多个tomcat正在运行),请删除tomcat temp目录(也可能是工作目录)并重试。
这真的帮了我。我试图杀死tomcat,重新启动,一切。当我关机,删除临时目录,然后开始备份,一切正常:-)谢谢! – jpswain 2011-06-06 23:11:32
显然,这是JDBC提供程序堆栈中的一个错误。但无论如何,我以前在码头的一些类似的代码:
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) {}
}
有时,特别是使用在Tomcat Spring应用程序时,该错误消息是误导 - 当有在不涉及任何JDBC驱动程序错误除了某些应用程序的BEAN初始化方法(或@PostConstruct)之外,所有这些都失败了。 错误堆栈跟踪是隐藏的,只出现在tomcat/logs/localhost.xxx 文件中。 只需注意这一行为。 这花了我很多时间。
问候, Yosi利
启动失败,因为以前* *的错误。请更新您的问题以包含这些错误。他们是这个问题的**根源。 – BalusC 2010-04-09 19:01:55
问题是之前没有列出任何错误。只有INFO消息。 – 2010-04-16 17:54:17