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

Arquillian远程Wildfly测试时依赖注入不生效问题

Arquillian对接远程Wildfly时CDI注入失效修复

具体问题和对应调整

  • Arquillian核心依赖版本错配
    你现在pom里arquillian-junit-container用的1.7.0.Alpha10,arquillian-protocol-servlet用的1.6.0.Final,两个核心包版本不统一,会直接导致测试类字节码增强、Servlet协议适配逻辑异常,CDI上下文根本没法正常传递到测试实例。
    直接把这两个依赖的版本都改成1.7.0.Final正式版就行,别混着用Alpha版和正式版。嫌手动管版本麻烦就加个arquillian-bom在dependencyManagement里锁版本,后续不会再出版本冲突问题。
  • Wildfly远程容器适配器用了测试版
    你引的wildfly-arquillian-container-remote是5.0.0.Alpha3,这是没发正式版的测试包,和你用的Wildfly26.1.1.Final有已知的CDI上下文传递bug,换正式版就好,版本改成4.0.0.Final,这个是官方验证过兼容Wildfly23-26全系列的稳定版。
  • 没指定默认激活的容器
    你arquillian.xml里同时配了managed和remote两个容器,但是没标哪个是默认用的,跑arq-remote profile的时候Arquillian有可能误选managed的配置,部署和测试执行的逻辑和远程环境不匹配,注入当然失效。
    把remote容器的配置段加个default标记就行:
    <container qualifier="remote" default="true">
        <configuration>
            <property name="managementAddress">127.0.0.1</property>
            <property name="managementPort">9990</property>
            <!-- 要是你的Wildfly开了管理端口认证,把下面两个配置补上,填你控制台的账号密码 -->
            <!-- <property name="username">admin</property>
            <property name="password">admin</property> -->
        </configuration>
    </container>
    
  • CDI扫描配置不严谨
    你现在打包的时候只加了个空的beans.xml,CDI2.0默认的bean发现模式是annotated,虽然TestService加了@Named,但是远程部署时类加载层级复杂的时候很容易漏扫。
    别用空的beans.xml,换成显式指定扫描模式的配置,文件放src/test/resources下,还是用addAsWebInfResource打包进去:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
           bean-discovery-mode="all" version="2.0">
    </beans>
    

验证步骤

改完直接跑mvn clean test -Parq-remote,你之前开了deploymentExportPath配置,测试时会把部署的war包导出到target目录,解压了确认三个点就行:

  • WEB-INF下面的beans.xml是你刚改的带全量扫描配置的版本
  • WEB-INF/classes里能找到TestService、ITestService对应的class文件
  • WEB-INF/lib里没有混着不同版本的Arquillian相关jar包
    这三点都满足的话,CDI注入就能正常工作,不会再出现注入为null的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:12:21