在我的 Java EE 项目中,有几个“Java EE”模块和一个 Web 模块。其中一个 Java EE 模块为 CDI 提供了一个类,供其他模块使用:
@ApplicationScoped
public class XFactory {
@Produces @Actual
public X create() {
return new X();
}
}
它们被注入
@SessionScoped
public class Target implements Serializable {
X x;
@Inject
public void setX(@Actual X x){
this.x = x;
}
}
但是,这只适用于其中一个 Java EE 模块和 web 模块。在所有剩余的 Java EE 模块中,注入始终失败,我不知道为什么:我得到的只是 WELD-1408, unsatisfied dependency。
所有模块都beans.xml
在适当的位置,只要我不切换到注入,它们都可以工作。大多数目标 bean 已经作为 JSF 中的注入 bean 使用。有效的 Java EE 模块的特别之处在于 bean 被注入到 web 模块中的 servlet,而不是 JSF。
该项目在 GlassFish 3.1 中使用 Java EE 6、EJB 3.1 运行。依赖项由 Maven 3 管理。X
它本身就是Serializable
,以满足钝化范围。
你以前遇到过这个吗?我做错了什么?
更新:在上面添加了依赖管理备注。
更新:更正了@Actual
in的位置Target
。
更新:经过一天的实验,更新了描述,提供了更多细节。