【问题标题】:Where to put META-INF/services/java.sql.Driver in web app将 META-INF/services/java.sql.Driver 放在 Web 应用程序的哪个位置
【发布时间】:2012-05-09 07:50:52
【问题描述】:

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 哪个位置正确?

顺便说一句,我在这两个地方都遇到了"No suitable Driver" 异常。

【问题讨论】:

    标签: java web-applications jpa jdbc


    【解决方案1】:

    您不应该自己提供。 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(它还提供更多优势,例如连接池)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多