【问题标题】:Injecting JSF Managed Bean to a EJB将 JSF 托管 Bean 注入 EJB
【发布时间】:2013-06-28 02:06:22
【问题描述】:

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

【问题讨论】:

  • 您为什么要这样做?您错误地认为这将是正确解决方案的问题到底是什么?而是询问并详细说明具体的功能要求。
  • 我错误地将业务逻辑包含到 JSF 托管 Bean 中。正如您所建议的,我将重新考虑因素,以便 EJB 所需的 JSF 托管 Bean 方法中的业务逻辑转移到新的 EJB。谢谢你。但是我怎么能接受这个作为答案呢?

标签: jsf jakarta-ee ejb


【解决方案1】:

不,这是不可能的。 @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/关键字。

【讨论】:

    猜你喜欢
    • 2012-01-27
    • 2013-07-28
    • 1970-01-01
    • 2014-03-19
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2014-07-01
    相关资源
    最近更新 更多