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

在JBoss EAP 8.0.0中注册SQL Server驱动失败,提示依赖缺失

解决JBoss EAP 8.0.0 Linux环境下SQL Server驱动注册失败(WFLYJCA0115)的问题

问题背景

在JBoss EAP 8.0.0环境中注册SQL Server驱动,执行CLI命令后触发报错:WFLYJCA0115: Module for driver [com.microsoft.sqlserver] or one of it dependencies is missing: [com.microsoft.sqlserver]。已在<server home>/modules/com/microsoft/sqlserver/main目录放置module.xml及对应JDBC JAR包,初始配置javax.transaction.api和javax.api依赖,替换为jakarta依赖后问题仍存在;相同配置在Windows环境可正常运行,且Oracle驱动用相同依赖注册无异常。

排查与解决步骤

1. 修正Linux环境的文件权限与路径大小写

Linux是大小写敏感系统,需确保:

  • 模块路径<server home>/modules/com/microsoft/sqlserver/main的目录名完全小写,不能出现大写字母(Windows不校验大小写,Linux会严格匹配)
  • 给JBoss运行用户赋予JAR包和module.xml的读权限,执行命令:
    chown -R jboss:jboss <server home>/modules/com/microsoft/sqlserver
    chmod -R 644 <server home>/modules/com/microsoft/sqlserver/main/*
    

2. 适配JBoss EAP 8的Jakarta规范调整Module.xml

JBoss EAP 8基于Jakarta EE 9,原javax.*模块已被jakarta.*替代,需更新module.xml的命名空间与依赖:

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:2.0" name="com.microsoft.sqlserver">
    <resources>
        <resource-root path="mssql-jdbc-13.2.0.jre11.jar"/>
    </resources>
    <dependencies>
        <module name="jakarta.transaction.api"/>
        <module name="jakarta.api"/>
        <!-- SQL Server JDBC 13.x额外依赖 -->
        <module name="jakarta.xml.bind.api"/>
        <module name="org.slf4j"/>
    </dependencies>
</module>
  • 命名空间从urn:jboss:module:1.9升级为urn:jboss:module:2.0(适配EAP 8模块规范)
  • 替换所有javax.*依赖为jakarta.*
  • 添加jakarta.xml.bind.api和org.slf4j:SQL Server JDBC 13.x版本依赖这两个模块,Oracle驱动无此需求

3. 验证JDBC版本兼容性

确保mssql-jdbc-13.2.0.jre11.jar与JBoss EAP 8的JDK版本匹配(EAP 8默认要求JDK 11+),若仍有问题,可尝试升级到mssql-jdbc-12.4.2.jre11.jar或更高版本(部分旧版本对Jakarta环境支持不完善)

4. 重新加载模块并执行CLI命令

  • 重启JBoss服务器,确保新模块被加载
  • 先验证模块是否存在:
    module list --name=com.microsoft.sqlserver
    
    若返回模块信息,再执行驱动添加命令:
    /subsystem=datasources/jdbc-driver=sqlserver:add(driver-name="sqlserver", driver-module-name="com.microsoft.sqlserver", driver-class-name="com.microsoft.sqlserver.jdbc.SQLServerDriver")
    

5. 查看日志定位隐藏依赖问题

若问题依旧,查看JBoss的standalone.log或domain.log,查找更详细的依赖缺失信息,可能存在未配置的隐藏依赖(如jakarta.servlet.api)

关键提示

Windows系统不校验路径大小写,所以大小写错误不会触发问题,但Linux会严格校验;Oracle驱动的依赖需求与SQL Server不同,因此相同配置在Oracle上可行不代表适用于SQL Server。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:22:42