将JSF Managed Bean注入EJB

时间:2013-06-28 02:06:23

标签: jsf java-ee ejb

是否可以将JSF Managed Bean注入EJB?我已将JSF Managed Beans注入另一个JSF Managed Bean作为@ManagedProperty。但是当我对EJB做同样的事情时,我得到一个零点异常。

1 个答案:

答案 0 :(得分:11)

不,那是不可能的。 @ManagedProperty仅适用于@ManagedBean类(JSF托管bean)。您只能使用@EJB@Inject注入另一个EJB或CDI托管bean(@Named类)。

然而,从技术上讲,在像EJB这样的业务服务类中注入像JSF或CDI托管bean这样的前端类是没有意义的。 EJB应该以这样的方式设计,即它可以在没有更改的情况下重用一个完全不同的前端,如JAX-RS Web服务,甚至是普通的servilla servlet。 EJB绝对不应该有任何javax.faces.*导入/依赖项(就像它不应该有javax.ws.rs.*javax.servlet.*那样)。

如果您打算将数据从JSF托管bean传递到EJB,那么只需将其作为方法参数传递。此类数据通常具有JPA @Entity的风格或至少返回实体的ID /关键字。