将JSF管理的Bean注入到EJB中

4

是否可以将JSF管理的Bean注入到EJB中?我已经将JSF管理的Bean作为@ManagedProperty注入到另一个JSF管理的Bean中。但是当我尝试将其注入到EJB中时,会出现空指针异常。


1
为什么你想要这样做?你到底遇到了什么问题,让你错误地认为这是正确的解决方案?相反,询问并详细说明具体的功能需求。 - BalusC
我错误地将业务逻辑包含在了JSF托管Bean中。正如您建议的那样,我将进行重构,以便将EJB所需的JSF托管Bean方法中的业务逻辑转移到新的EJB中。谢谢。但是我该如何接受这个答案呢? - Buddhika Ariyaratne
1个回答

11

不可能。 @ManagedProperty 只适用于在 @ManagedBean 类(JSF 托管的 bean)内部使用。您只能使用 @EJB@Inject 注入另一个 EJB 或者 CDI 管理的 bean(@Named 类)。

但是,在业务服务类(如 EJB)中注入前端类(如 JSF 或 CDI 托管的 bean )在设计上没有技术意义。EJB 应该设计成这样,即它可以在完全不同的前端(如 JAX-RS webservice 或甚至纯净的 vanilla servlet)中重复使用而无需更改。EJB 绝对不应具有任何 javax.faces.* 的导入/依赖项(就像它不应具有任何 javax.ws.rs.*javax.servlet.* 的一样)。

如果您打算将数据从 JSF 托管的 bean 传递到 EJB,则只需将它作为方法参数传递。这样的数据通常是 JPA @Entity 或至少返回实体的 ID/关键字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接