2012-04-29 81 views
2

javadoc說「要裝入my.sql.Driver類,META-INF/services/java.sql.Driver文件將包含條目:my.sql.Driver「。將META-INF/services/java.sql.Driver放在web應用程序中的位置

不要webapps通常有一個META-INF文件夾作爲WEB-INF的兄弟嗎?但是,JPA規範正在尋找WEB-INF/classes/META-INF /中的persistence.xml。

哪個地方對於services/java.sql.Driver是正確的?

順便說一句,我得到"No suitable Driver"例外與它在這兩個地方。

回答

7

你不應該自己提供。 JDBC驅動程序JAR文件應該已經包含它。至少,如果它是一個JDBC 4.0兼容的驅動程序。這也明確提到javadoc of DriverManager

DriverManager方法getConnectiongetDrivers已得到增強,支持Java標準版Service Provider機制。 JDBC 4.0驅動程序必須包含文件META-INF/services/java.sql.Driver。該文件包含java.sql.Driver的JDBC驅動程序實現的名稱。例如,加載my.sql.Driver類中,META-INF/services/java.sql.Driver文件將包含項:

my.sql.Driver 

應用程序不再需要使用Class.forName()顯式地加載JDBC驅動程序。當前使用Class.forName()加載JDBC驅動程序的程序將繼續工作而不進行修改。

如果你的沒有,那麼它顯然不是JDBC 4.0兼容的驅動程序。您需要自己顯式加載驅動程序,或者升級到符合JDBC 4.0的驅動程序,或者僅使用受管理的容器DataSource(它也提供了更多優勢,例如連接池)。

相關問題