2

javadoc说“要加载 my.sql.Driver 类,META-INF/services/java.sql.Driver 文件将包含条目:my.sql.Driver”。

webapps 通常没有 META-INF 文件夹作为 WEB-INF 的兄弟吗?但是,JPA 规范正在 WEB-INF/classes/META-INF/ 中寻找 persistence.xml。

哪个地方适合 services/java.sql.Driver?

顺便说一句,我在这两个地方都遇到了“没有合适的驱动程序”异常。

4

1 回答 1

8

您不应该自己提供。JDBC 驱动程序 JAR 文件应该已经包含它。至少,如果它是符合 JDBC 4.0 的驱动程序的话。这在javadoc 中DriverManager也明确提到:

这些DriverManager方法getConnection得到getDrivers了增强,以支持 Java 标准版服务提供者机制。JDBC 4.0 驱动程序必须包含该文件META-INF/services/java.sql.Driver。此文件包含 JDBC 驱动程序实现的名称java.sql.Driver。例如,要加载my.sql.Driver类,META-INF/services/java.sql.Driver文件将包含以下条目:

my.sql.Driver

应用程序不再需要使用Class.forName(). 当前加载 JDBC 驱动程序使用的现有程序Class.forName()将继续工作而无需修改。

如果您没有,那么它显然不是符合 JDBC 4.0 的驱动程序。您需要自己显式加载驱动程序,或者升级到符合 JDBC 4.0 的驱动程序,或者只使用托管容器DataSource(这也提供了更多优势,例如连接池)。

于 2012-04-29T04:42:12.107 回答