繁体   English   中英

在网络应用程序中放置META-INF / services / java.sql.Driver的位置

[英]Where to put META-INF/services/java.sql.Driver in web app

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”例外。

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

DriverManager方法getConnectiongetDrivers已得到增强,可支持Java Standard Edition 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 (它提供了更多优势,例如连接池)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM