javadoc说“要加载my.sql.Driver类,META-INF / services / java.sql.Driver文件将包含条目:my.sql.Driver”。
Web应用程序通常没有META-INF文件夹作为WEB-INF的兄弟吗?但是,JPA规范正在WEB-INF / classes / META-INF /.
中寻找persistence.xml对于services / java.sql.Driver,哪个地方正确?
顺便说一句,我在两个地方都遇到了"No suitable Driver"例外情况。
答案 0 :(得分:8)
你不应该自己提供。 JDBC驱动程序JAR文件应该已包含它。至少,如果它是JDBC 4.0兼容的驱动程序。 javadoc of DriverManager
中也明确提到了这一点:
DriverManager
方法getConnection
和getDrivers
已得到增强,可支持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
的容器(它还提供更多优势,例如连接池)。