【问题标题】:Injecting Stateful bean Inside Request Scope Session Bean [duplicate]在请求范围会话 Bean 中注入有状态 bean [重复]
【发布时间】:2015-02-23 11:24:29
【问题描述】:

在请求范围的会话 bean 中注入有状态的 ejb bean 与在请求范围的会话 bean 中注入无状态的 ejbbean 有什么区别?请求范围的 bean 是否在每次调用时都会为有状态 bean 创建一个新实例?

【问题讨论】:

  • 我明白你说的。我更关心如何使用有状态 bean 将会话存储在 EJB 应用程序中。你能详细说明一下吗?如何调用有状态会话bean从jsf管理bean执行业务逻辑?
  • 感谢您的回复。实际上,我可以使用 JSF/CDI 会话范围的 bean 存储会话,并为大多数业务逻辑使用无状态 bean,但这真的让我想到有状态的用途是什么豆那时。我认为有状态的 bean 用于存储会话,它是 HTTP 会话对象的替换。
  • 我明白了..感谢您的时间和帮助..

标签: jsf ejb


【解决方案1】:
  • 在部署 有状态 会话 bean 之前,它处于 不存在 状态。成功部署后,EJB 容器对 bean 执行任何所需的依赖注入,然后进入 就绪状态。至此,bean 已经准备好拥有它的方法了 由客户端应用程序调用。
  • 有状态 会话 bean 处于就绪状态时,EJB 容器可能决定钝化它,即将它从 主存储器到辅助存储器。发生这种情况时,豆 进入被动状态。
  • 如果 有状态 会话 bean 的实例尚未被访问 在一段时间内,EJB 容器会将 bean 设置为 Does Not 存在状态。
  • 无状态会话 bean 生命周期仅包含 不存在Ready 状态,无状态会话 bean永远不会钝化
  • RequestScoped Bean 的生命周期与 HTTP 请求响应的生命周期一样长。

因此,在请求范围内的支持 bean 中的无状态 bean 将在 HTTP 请求响应后销毁,但有状态的 bean 将进入被动状态。

【讨论】:

  • 感谢您的回答。您能否详细说明如何通过从 jsf 托管 bean 调用/注入使用有状态 bean 来存储会话?
  • 我可以将状态存储在 JSF 会话范围的 bean 中,并使用无状态 bean 进行业务逻辑,但我想尝试使用有状态 bean 来存储会话,因为有状态 bean 是 HTTP 会话对象的替换。
  • 不客气,我不知道你到底想做什么以及为什么在请求范围的支持 bean 中使用有状态 bean,但你可以使用 **FacesContext.getExternalContext() .getSession/getSessionMap() ** 检索或存储会话的对象。祝你好运。
猜你喜欢
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多