2012-04-29 142 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(它也提供了更多优势,例如连接池)。

相关问题