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

Wildfly 24跨项目EJB调用报错WFLYEJB0405如何解决?

Wildfly跨部署单元EJB注入报错WFLYEJB0405解决方案

核心原因

该错误是schedulers独立war包作为独立部署单元,无法识别另一个部署单元services中注册的远程EJB Bean,属于跨部署EJB调用的配置遗漏问题,可按以下顺序排查修复:

  • 公共接口依赖一致性检查

    com.tests.services和com.tests.schedulers两个项目必须同时引入com.tests.interfaces的依赖,且两个项目引用的IFoo接口全限定类名、方法签名完全一致,禁止在schedulers项目中单独定义同名同路径接口,或引入不同版本的接口包。
  • 远程EJB视图显式声明

    虽然IFoo接口已经加了@Remote注解,仍需在FooBean实现类上显式指定远程视图,避免Wildfly默认注册为本地视图无法跨包调用:
    @Stateless(name = "IFoo")
    @Remote(IFoo.class) // 新增该注解显式暴露远程视图
    public class FooBean implements IFoo {
        // 原有业务代码
    }
    
  • 跨部署EJB注入注解调整

    跨不同部署包调用远程EJB时,仅指定beanName无法跨部署单元识别,必须使用lookup属性指定全局JNDI路径:
    // 替换原有@EJB(beanName = "IFoo")
    @EJB(lookup = "java:global/com.tests.services/IFoo!com.tests.interfaces.IFoo")
    private IFoo iFoo;
    
    全局JNDI命名规则为java:global/[services项目部署包名]/[Bean名称]![远程接口全限定名],如果services项目打包为ear,需要在部署包名前加ear包名,也可以直接在Wildfly管理控制台的JNDI浏览器中查询IFoo的实际绑定路径替换。
  • 部署顺序依赖配置

    必须保证services项目先部署完成、EJB成功注册到JNDI后再启动schedulers项目,可在schedulers项目的WEB-INF目录下新增jboss-all.xml配置强制指定部署依赖:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:08