【发布时间】:2012-07-03 03:00:48
【问题描述】:
为什么可以将@Inject 一个@Stateless EJB 转换为一个@SessionScoped Managed Bean?
我只是很好奇,因为不可能在 SessionScoped 托管 Bean 中使用 @RequestScoped 托管 Bean 作为托管属性。
【问题讨论】:
为什么可以将@Inject 一个@Stateless EJB 转换为一个@SessionScoped Managed Bean?
我只是很好奇,因为不可能在 SessionScoped 托管 Bean 中使用 @RequestScoped 托管 Bean 作为托管属性。
【问题讨论】:
为什么可以@Inject 一个@Stateless EJB 到一个@SessionScoped 托管 Bean?
这完全有道理。您可能希望从有状态服务(例如购物流程)中访问无状态组件(例如验证服务)。 CDI 引用为proxied,因此分辨率不存在技术问题。
我只是很好奇,因为无法使用 SessionScoped Managed Bean 中的 @RequestScoped Managed Bean as managed 属性。
您指的是 JSF 范围,而不是 CDI 范围,对吗?我不知道为什么该星座可能被禁止,但两个规范完全不相关,因此没有“如果 A 在 JSF 中为真,则 B 在 CDI 中必须为真”-关系...
【讨论】:
@RequestScoped 当然也是一个 CDI 范围。 JSF 引用由“托管属性”触发
@RequestScoped。由于 bean 的生命周期,它在 JSF 中是不允许的。我认为 EJB 可能是一样的。与托管 Bean (JSF) 相比,EJB 的生命周期是否不同?