相关疑难解决方法(0)

CDI注射循环

我在JBoss 7.1.1中遇到了CDI Injection进入Weld容器的问题

我有以下对象模型:

@Stateless
class ServiceEjb {
@Inject
A a;
}

class A {
@Inject
B b;
}

class B {
@Inject
A a;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的无状态类中注入A或B时,注入循环并使用javax.enterprise.inject.CreationException崩溃.

我尝试了很多东西(范围,@ Singleton在A或B但没有成功).我不想打破代码,那些注射让人感觉到了.

任何线索将不胜感激.

dependency-injection circular-dependency cdi jboss-weld

5
推荐指数
2
解决办法
5139
查看次数

无状态会话bean之间的循环依赖 - 良好的做​​法?

我在部署两个无状态会话bean时遇到了部署错误,每个会话bean都依赖于另一个并使用@Inject.

@Stateless
class BeanA {
    @Inject 
    BeanB b;

    public void doSomething() {
        b.doSomething();
    }
}

@Stateless
class BeanB {
    @Inject
    BeanA a;

    public void doSomeOtherThing() {
        a.doSomeOtherThing();
    }
}
Run Code Online (Sandbox Code Playgroud)

在部署时,我从Glassfish/weld获得此异常:

org.jboss.weld.exceptions.DeploymentException:WELD-001443伪范围bean具有循环依赖关系.

用@EJB而不是@Inject注入Beans,一切正常.现在我有两个问题.

首先 - 焊接内部会发生什么,这是不允许的?

第二个(可能更重要) - 这是建筑方面的不良做法,如果是,你知道任何避免它的模式吗?根据我目前的知识,允许同一层上的业务驱动服务以他们需要的任何方式相互通信.

java ejb java-ee cdi

3
推荐指数
1
解决办法
1393
查看次数