gpt4 book ai didi

java - 为什么 CDI 注入(inject)在某些模块中无法工作,而在其他模块中却不能?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:10 25 4
gpt4 key购买 nike

在我的 Java EE 项目中,有几个“Java EE”模块和一个 Web 模块。Java EE 模块之一为 CDI 提供了一个类,供其他模块使用:

@ApplicationScoped
public class XFactory {

@Produces @Actual
public X create() {
return new X();
}
}

它们被注入(inject)

   @SessionScoped
public class Target implements Serializable {
X x;

@Inject
public void setX(@Actual X x){
this.x = x;
}
}

但是,这仅适用于 Java EE 模块之一和 Web 模块。在所有剩余的 Java EE 模块中,注入(inject)始终失败,我对原因一无所知:我得到的只是WELD-1408,未满足的依赖性

所有模块在适当的位置都有 beans.xml,只要我不切换到注入(inject),它们都可以工作。大多数目标 bean 已经在 J​​SF 中用作注入(inject) bean。Java EE 模块的特别之处在于,bean 被注入(inject)到 web 模块中的 servlet,而不是 JSF。

该项目在 GlassFish 3.1 中使用 Java EE 6、EJB 3.1 运行。依赖关系由 Maven 3 管理。X 本身是 Serializable,以满足钝化范围。

你以前遇到过这个吗?我可能做错了什么?

更新:在上面添加了依赖管理备注。

更新:更正了 @ActualTarget 中的位置。

更新:经过一天的实验,更新了包含更多详细信息的描述。

最佳答案

这似乎是 Glassfish 3.1 中的一个问题,在它包含的库​​之一中,或者可能在 JDK 6 中。

我刚刚将我的系统更新到 Glassfish 3.1.1 和 JDK 7,问题不再出现。

关于java - 为什么 CDI 注入(inject)在某些模块中无法工作,而在其他模块中却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6859286/

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