【问题标题】:Why is it possible to @Inject a @Stateless EJB into a @SessionScoped Managed Bean?为什么可以将 @Stateless EJB @Inject 到 @SessionScoped 托管 Bean 中?
【发布时间】:2012-07-03 03:00:48
【问题描述】:

为什么可以将@Inject 一个@Stateless EJB 转换为一个@SessionScoped Managed Bean?

我只是很好奇,因为不可能在 SessionScoped 托管 Bean 中使用 @RequestScoped 托管 Bean 作为托管属性。

【问题讨论】:

    标签: jsf jsf-2 ejb ejb-3.0 cdi


    【解决方案1】:

    为什么可以@Inject 一个@Stateless EJB 到一个@SessionScoped 托管 Bean?

    这完全有道理。您可能希望从有状态服务(例如购物流程)中访问无状态组件(例如验证服务)。 CDI 引用为proxied,因此分辨率不存在技术问题。

    我只是很好奇,因为无法使用 SessionScoped Managed Bean 中的 @RequestScoped Managed Bean as managed 属性。

    您指的是 JSF 范围,而不是 CDI 范围,对吗?我不知道为什么该星座可能被禁止,但两个规范完全不相关,因此没有“如果 A 在 JSF 中为真,则 B 在 CDI 中必须为真”-关系...

    【讨论】:

    • 一月,@RequestScoped 也是一个 CDI 范围。请参阅docs.jboss.org/cdi/api/1.0-SP1/javax/enterprise/context/… 请注意,此范围的某些元素与 Web 请求、Servlet、JSP 或 JSF 等无关。尽管从提出问题的方式来看,我认为 OP 确实在谈论具有相同名称的 JSF 范围; )
    • 是的,@RequestScoped 当然也是一个 CDI 范围。 JSF 引用由“托管属性”触发
    • 是的,我说的是来自 JSF 的 @RequestScoped。由于 bean 的生命周期,它在 JSF 中是不允许的。我认为 EJB 可能是一样的。与托管 Bean (JSF) 相比,EJB 的生命周期是否不同?
    • 是的。但我们鼓励您在单独的线程中提出新问题:)
    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 2011-06-18
    • 2013-06-30
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多