【问题标题】:Can I Reach Stateful Bean After Closing The Browser?关闭浏览器后能否访问 Stateful Bean?
【发布时间】:2015-11-16 15:17:43
【问题描述】:

我需要关于无状态和有状态会话 Bean 的帮助。我有几个问题。

  1. 请清楚的告诉我 Stateless 和 Stateful Session Bean 有什么区别?
  2. 有些人说有状态的 bean 保存有关客户端的信息。 Stateful bean 保存什么样的信息?
  3. 假设我有一个包含 EJB(无状态和有状态会话 Bean)的 Web 项目。如果我完全关闭浏览器,是否可以再次访问相同的 Stateful Session Bean 实例?

感谢您的回答。 :)

【问题讨论】:

    标签: ejb stateful-session-bean


    【解决方案1】:
    1. 无状态 bean 完全可以互换,任何实例都可以服务任何传入请求,完全由容器自行决定。出于这个原因,他们不应该存储与特定客户端或请求相关的任何状态,因为他们不知道接下来将处理哪个客户端。有状态 bean 实例是为单个客户端创建的。它们可以存储状态并在调用之间进行维护,以便客户端可以继续对话,而不仅仅是离散请求。
    2. 存储的状态可以是您想要的任何数据。关键是同一个 bean 实例将处理单个客户端的请求,因此您可以添加存储数据所需的任何实例字段。
    3. 会话将由浏览器 cookie 标识,容器将与 bean 实例相关联,所以我希望只要 cookie 没有被删除或以其他方式失效,它不会有任何区别. (我不太确定这一点,因为它不在规范的严格 EJB 部分)

    【讨论】:

    • 感谢您的回答。我需要问你一些额外的问题。如果我不在有状态会话 bean 中使用 @Remove 表示法,那么 bean 在我关闭服务器之前是否在服务器中?
    • 不,只要服务器决定删除会话 bean,它就会被删除,它只是不会先调用您的方法。
    • 再次非常感谢。最后,可以肯定的是,我想问最后一个问题。如果完全关闭浏览器,我将无法再次访问有状态会话 bean。这是真的吗?因为我知道当会话关闭时,bean 实例被销毁。
    • 我的期望是会话由浏览器中的会话 cookie 管理,不会(通常)因为浏览器关闭而被删除。如果会话有一段时间不活动,则有状态 bean 可能会被钝化,如果一段时间不活动,它可能会被删除。 (具体时间取决于容器,并且可以通过供应商特定的方式进行配置)
    猜你喜欢
    • 1970-01-01
    • 2019-04-22
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多