EJB:Singleton会话bean或更像appaton bean

时间:2013-12-05 21:32:23

标签: singleton ejb ejb-3.0 ejb-3.1 session-bean

我正在重新阅读Javaee7 oracle文档,这里是陈述的内容。

“单个会话bean每个应用程序实例化一次,并且存在于 应用程序的生命周期。单例会话bean是为环境而设计的 单个企业bean实例共享并由其同时访问 客户端“。

我完全理解它的含义。然而,想到这一点,会话这个词在这里是非常误导的。由于它存在于应用程序级别,因此术语“会话”似乎不适用于此。

当我想到“会话”这个词时,我认为每个用户都是会话。如果那个单例会话bean用于跨应用程序,那么它不应该被称为会话bean(相反,可能会更好地理解应用程序bean)。

有什么意见吗?

2 个答案:

答案 0 :(得分:0)

  

当我想到“会话”这个词时,我认为就每个用户而言,这是一个会话

此上下文中的术语“会话”表示unit of work或商业交易。

在Stateless和Singleton bean中,当新请求到达时,将打开一个新的会话/业务事务, 它一直存在,直到它发送回客户端的响应。 (每个请求的会话模式)

对于有状态会话bean,业务事务可能意味着多个客户端请求。从Stateful bean的角度来看,客户端是将请求发送到同一个有状态实例的代理。

编辑(评论时间太长)

我认为Application Bean可能是一个好名字,实际上它们适合存储应用程序设置,但关键是它们被称为会话Bean。

在此上下文中,“session”是业务事务执行的时间段。对于Stateless和Singleton,此期间与请求/响应周期匹配。

  

...如果该单例会话bean用于跨应用程序,则不应将其称为会话bean

Singleton在客户端调用之间维护其状态这一事实并不意味着每个请求的会话模型不适用。您的应用程序中使用的每个Singleton引用都是一个客户端,当客户端发出请求时,会创建一个新的会话

答案 1 :(得分:0)

  • 无状态 - 会话持续单个客户端操作
  • 有状态 - 会话持续跨越客户的操作
  • Singleton - 会话跨越客户端应用程序
相关问题