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

在Wildfly 23中配置无密码Azure SQL连接遇问题求助

解决Wildfly 23配置Azure SQL托管身份连接的依赖加载问题

问题根源

你遇到的Failed to load MSAL4J Java library异常,本质是Wildfly容器的数据源类加载器无法找到azure-identity及MSAL4J相关依赖——因为应用的类路径和Wildfly容器的类路径是隔离的,只把jar包放进应用无效,必须将这些依赖注册为Wildfly系统模块,并让SQL Server驱动模块依赖它。

具体解决步骤

  1. 准备依赖Jar包

    • 从Maven仓库下载对应版本的依赖包(需匹配你使用的mssql-jdbc-12.4.1.jre11,推荐azure-identity:1.12.0及配套依赖):
      • azure-identity-1.12.0.jar
      • msal4j-1.24.0.jar
      • azure-core-1.40.0.jar
      • jackson-databind-2.15.2.jar、jackson-core-2.15.2.jar、jackson-annotations-2.15.2.jar
      • guava-32.1.3-jre.jar
  2. 创建Wildfly模块目录
    在Wildfly安装目录下,创建模块结构:

    modules/system/layers/base/com/azure/identity/main
    

    将所有下载的Jar包放入这个目录。

  3. 编写模块配置文件module.xml
    在上述目录下创建module.xml,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.5" name="com.azure.identity">
        <resources>
            <resource-root path="azure-identity-1.12.0.jar"/>
            <resource-root path="msal4j-1.24.0.jar"/>
            <resource-root path="azure-core-1.40.0.jar"/>
            <resource-root path="jackson-databind-2.15.2.jar"/>
            <resource-root path="jackson-core-2.15.2.jar"/>
            <resource-root path="jackson-annotations-2.15.2.jar"/>
            <resource-root path="guava-32.1.3-jre.jar"/>
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.security.auth.message.api"/>
            <module name="org.slf4j"/>
        </dependencies>
    </module>
    
  4. 修改SQL Server驱动模块的依赖
    找到Wildfly中SQL Server驱动的模块目录(通常是modules/system/layers/base/com/microsoft/sqlserver/main),打开其module.xml,在<dependencies>节点中添加:

    <module name="com.azure.identity"/>
    
  5. 调整数据源配置(可选但推荐)
    规范数据源的驱动引用方式,避免直接使用Jar文件名,改为引用模块名称。在standalone.xml中确保驱动配置如下:

    <driver name="mssql" module="com.microsoft.sqlserver">
        <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    </driver>
    

    然后数据源的<driver>字段改为:

    <driver>mssql</driver>
    
  6. 重启Wildfly并测试连接
    重启Wildfly服务,测试数据源连接。同时需确认Azure侧的权限配置:

    • 确保托管身份(如Azure VM/AKS的托管身份)已被授予Azure SQL的访问权限
    • 在Azure SQL中创建对应托管身份的用户:
      CREATE USER [你的托管身份名称] FROM EXTERNAL PROVIDER;
      ALTER ROLE db_datareader ADD MEMBER [你的托管身份名称];
      ALTER ROLE db_datawriter ADD MEMBER [你的托管身份名称];
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:05:11