You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WildFly 35配置MySQL数据源报错:缺失jboss.jdbc-driver.com_mysql

WildFly 35配置MySQL DataSource驱动识别失败问题排查与解决

问题描述

启动WildFly 35时,配置MySQL DataSource触发如下报错:

("subsystem" => "datasources"),  
    ("data-source" => "MySQLDS")  
]) - failure description: {  
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.com_mysql"],  
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [  
        "service jboss.data-source.\"jboss.naming.context.java.jboss.datasources.MySQLDS\" is missing [jboss.jdbc-driver.com_mysql]",  
        "service jboss.driver-demander.java:jboss/datasources/MySQLDS is missing [jboss.jdbc-driver.com_mysql]"  
    ]  
}

当前配置

  1. standalone.xml 配置片段:
<datasources>
                <datasource jndi-name="java:jboss/datasources/MySQLDS" pool-name="MySQLDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:mysql://localhost:3306/examdb?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</connection-url>
                    <driver>com.mysql</driver>
                    <security user-name="root" password="pwd"/>
                </datasource>
                <drivers>
                    <driver name="mysql" module="com.mysql">
                        <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
  1. module.xml 配置(路径:{WILDFLY_HOME}/modules/system/layers/base/com/mysql/main/):
<module xmlns="urn:jboss:module:1.1" name="com.mysql">  
    <resources>  
        <resource-root path="mysql-connector-j-8.0.33.jar"/>  
    </resources>  
    <dependencies>  
        <module name="jakarta.api"/>  
        <module name="javax.transaction.api"/>  
    </dependencies>  
</module>

MySQL驱动包mysql-connector-j-8.0.33.jar已放置在上述com/mysql/main/目录下。

已执行的排查步骤

  • 验证驱动JAR包存在且路径与module.xml配置一致
  • 修改配置后均重启WildFly
  • 检查module.xml语法及依赖项

WildFly管理控制台显示:数据源已存在但因缺失jboss.jdbc-driver.com_mysql标记为无效。

疑问

  1. 为何WildFly无法识别MySQL驱动模块?
  2. 针对WildFly 35兼容性,是否遗漏了额外配置步骤?
  3. 如何解决该问题,成功配置MySQL DataSource?

注:WildFly 35支持Jakarta EE 9/10,应用依赖Jakarta包而非javax包,不确定是否影响驱动注册。


问题原因与解决方案

1. 驱动识别失败的核心原因

你的配置存在两个关键问题:

  • 驱动名称不匹配:数据源配置中<driver>com.mysql</driver>指定的驱动名称,与<drivers>节点下驱动的name="mysql"不一致,WildFly无法关联到对应驱动服务,触发缺失jboss.jdbc-driver.com_mysql的错误
  • 依赖版本不兼容:WildFly 35基于Jakarta EE 10,仍使用javax.transaction.api依赖会导致模块加载异常

2. WildFly 35兼容性注意点

WildFly 35全面适配Jakarta EE 10,所有原javax前缀的API依赖必须替换为jakarta版本;同时驱动配置的名称必须严格保持一致,否则无法建立关联。

3. 具体修复步骤

步骤1:修正standalone.xml的驱动名称匹配

将数据源的<driver>值与<drivers>节点下的驱动name统一,二选一即可:

<!-- 方式1:修改数据源的driver值为mysql -->
<datasource ...>
    ...
    <driver>mysql</driver>
    ...
</datasource>

<!-- 方式2:统一驱动名称为com.mysql -->
<drivers>
    <driver name="com.mysql" module="com.mysql">
        <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
    </driver>
</drivers>

步骤2:更新module.xml的Jakarta依赖

将javax.transaction.api替换为Jakarta版本:

<module xmlns="urn:jboss:module:1.1" name="com.mysql">  
    <resources>  
        <resource-root path="mysql-connector-j-8.0.33.jar"/>  
    </resources>  
    <dependencies>  
        <module name="jakarta.api"/>  
        <module name="jakarta.transaction.api"/> <!-- 替换原javax依赖 -->
    </dependencies>  
</module>

步骤3:验证驱动模块加载

通过WildFly CLI验证驱动是否成功加载:

# 进入WildFly CLI
./bin/jboss-cli.sh --connect
# 查询已加载的JDBC驱动
/subsystem=datasources/jdbc-driver=mysql:read-resource

返回正常驱动信息则说明模块加载成功。

步骤4:重启并测试数据源

重启WildFly后,通过CLI测试数据源连接:

/subsystem=datasources/data-source=MySQLDS:test-connection-in-pool

返回{outcome => success}则配置生效。


内容的提问来源于stack exchange,提问作者Mohamed Mahdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:17:02