2016-09-23 67 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中,並且你這樣做了,那麼這些應用程序也將無法訪問這個驅動程序。它由系統類加載器加載,而不是由上下文類加載器加載。 –