MySQL 已安装驱动程序但 getConnection 抛出找不到合适的驱动程序

MySQL driver installed but getConnection throws No suitable driver found

我在 独立 模式下全新安装了 Wildfly 10 应用程序服务器 运行。我需要部署一个需要 MySQL JDBC 驱动程序的项目。 我按照 JDBC Driver Setup 中的教程安装了驱动程序(我选择了模块安装)。重启 WildFly 后,在 console.log 我读到:

INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 33) WFLYJCA0005: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1) INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) WFLYJCA0018: Started Driver service with driver-name = mysql

看起来一切正常,但我无法连接到数据库。 我正在使用这段代码:

Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName?user=someUser&password=somePass");

第一行抛出异常:

com.mysql.jdbc.Driver from [Module "deployment.someProject-1.0.0.war:main from Service Module Loader]"

如果我注释掉第一行,我会得到 没有合适的驱动程序异常

你有什么想法吗?谢谢指教

我有一个想法。

据我所知,默认情况下,在 WildFly 中,应用程序看不到模块。 我想您需要让您的应用了解 MySql 模块。

如果您有 WAR,则需要在 WEB-INF 文件夹中创建文件 jboss-deployment-structure.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
    <dependencies>
      <module name="mysql" />      
    </dependencies>    
  </deployment>
</jboss-deployment-structure>

您需要为您的 WAR 添加对刚创建的 MySQL 模块的依赖。

有两种方法,使用 WAR 中的 MANIFEST.MF 文件,其中包含一行 Dependencies: com.mysql

或使用 jboss-依赖项 XML 文件,如:

<jboss-deployment-structure>

   <deployment>

      <dependencies>
         <module name="com.mysql" />
      </dependencies>

   </deployment>
</jboss-deployment-structure>

两者都应放在 WAR 文件的 META-INF 目录中。应该有 Maven 插件可以为您创建两者。