Java DriverManager 不加载 Mysql 驱动程序

Java DriverManager does not load Mysql driver

Java DriverManager 不加载 Mysql 驱动程序

DriverManager
    static {
        loadInitialDrivers();
        println("JDBC DriverManager initialized");
    }

Mysql jdbc 驱动程序在 Tomcat 库下。

  tomcat/lib/mysql-jdbc.jar

从调试器调用DriverManager.getDriver(URL)之前,断点是 在方法 loadInitialDrivers() 中设置,但执行不会在那里停止。是静态方法,当加载class时调用静态方法?

加载的驱动程序列表(registeredDrivers)为空。

更新

将ojdbc6.jar添加到tomcat/lib,然后重新启动tomcat。 DriverManager 没有 加载驱动程序。可能是什么问题? tomcat 似乎忽略了 tomcat/lib 目录下的所有 JDBC jar。

也尝试过:将 jdbc 驱动程序复制到 webapps/myapp/WEB-INF/lib,但没有帮助。

来自简单 Java 应用程序的

运行 SQL 与 Tomcat 等 JEE 服务器的 运行ning SQL 完全不同(好吧...至少是半个 JEE 服务器)。

不要使用 static 初始值设定项。相反,JEE(Java 企业版)的做法有所不同,原因有很多:

  • 在 Tomcat 中您不需要 "load" 驱动程序。只需将其放入 TOMCAT_HOME/lib 并重新启动 Tomcat。而已。驱动程序已经加载。在启动时查看 Tomcat 日志,您会看到它。 Tomcat(就像任何 JEE 服务器所做的那样)负责加载它。

  • 然后,您需要做的是创建一个 JDBC 数据源。有很多关于如何做到这一点的例子。您可以通过修改 conf/server.xml 文件并重新启动 Tomcat 来完成此操作。确保给数据源起一个你记得的名字;您将在下一步中使用它。启动时再次查看 Tomcat 的日志文件,您会看到全新的数据源是 registered/created.

  • 接下来,在您的 JEE 代码中,您使用在上一步中配置的名称从 JNDI 目录中检索数据源,并使用它创建一个 Connection。同样,有很多关于如何执行此操作的示例。

  • 最后,使用 Connection 你可以 运行 所有你想要的 SQL 语句。这是您已经熟知的部分。像往常一样做。