gpt4 book ai didi

jakarta-ee - 为什么无状态 bean 被视为伪作用域并且不能具有循环依赖关系?

转载 作者:行者123 更新时间:2023-12-03 08:24:18 24 4
gpt4 key购买 nike

使用 Wildfly 8.1 我有几个 bean,我尝试将几个 EJB 相互注入(inject)。假设我有 3 个 bean :

@Stateless 
public class A{
@Inject
private B b;
}

@Stateless
public class B{
@Inject
private C c;
}

@Stateless
public class C{
@Inject
private A a;
}
显然,我有循环依赖。根据规范:

The container is required to support circularities in the beandependency graph where at least one bean participating in everycircular chain of dependencies has a normal scope


在容器中运行上述代码会导致以下形式的错误:

org.jboss.weld.exceptions.DeploymentException: WELD-001443: Pseudo scoped bean has circular dependencies. Dependency path:

-Session bean [class A withqualifiers [@Default @Any]; local interfaces are[A]BackedAnnotatedField] @Inject private B,

[..]


我的问题是:@Stateless bean 的范围是什么?默认情况下是@Dependent吗?最重要的是如何启用无状态 session bean 之间的循环依赖关系?
对不起,如果问题太琐碎。我将感谢任何可以解释所呈现行为的好的进一步阅读资源。提前致谢。
更新
行。我找到了解决方法。我使用了@EJB 注释而不是@Inject,但这并不能解释@Inject 的奇怪行为。这个问题仍然悬而未决,但正如 Mika 所说,这可能是 CDI 规范和 Weld RI 中 Unresolved 问题。

最佳答案

这是 wildfly/jboss CDI 实现中的一个错误。当前解决方法(由@MikeBraun 建议),在问题描述https://issues.jboss.org/browse/CDI-414 中提供,就是用@EJB注解代替@Inject。

关于jakarta-ee - 为什么无状态 bean 被视为伪作用域并且不能具有循环依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com