2016-09-23 107 views
-1

我在ContextListener的contextDestroyed方法(Tomcat)中取消注册JDBC驱动程序,我注意到两个JDBC驱动程序而不是一个。未知sun.jdbc.odbc.JdbcOdbcDriver的实例

我确实加载了一个oracle.jdbc.driver.OracleDriver的实例,但我不知道为什么以及谁加载sun.jdbc.odbc.JdbcOdbcDriver

任何提示?

回答

2

由于JDBC 4(Java 6)JDBC驱动程序在具有正确服务条目的类路径上时自动加载。

JdbcOdbcDriver在Java 6和7中自动加载,因为它位于类路径上(它是Java本身的一部分);它在Java 8中被删除。

请注意,您不需要删除此驱动程序,因为它已针对整个JVM加载,而不仅仅针对您的上下文(Web应用程序)加载。

+0

我只需在contextInitialized()然后注销它。 –

+2

@MohamedEnnahdiElIdrissi如果你不使用它,这不是一个真正的问题,但是如果你有其他的应用程序运行在同一个tomcat中,并且你这样做了,那么这些应用程序也将无法访问这个驱动程序。它由系统类加载器加载,而不是由上下文类加载器加载。 –