【发布时间】:2015-02-21 05:28:42
【问题描述】:
“有状态:这些 bean 可以跨方法调用保持客户端状态。这可以通过使用在类定义中声明的实例变量来实现。然后客户端将为这些变量设置值并在其他方法调用中使用这些值。 "
跨方法调用保持状态是什么意思?
对不起,我的问题很幼稚。
【问题讨论】:
“有状态:这些 bean 可以跨方法调用保持客户端状态。这可以通过使用在类定义中声明的实例变量来实现。然后客户端将为这些变量设置值并在其他方法调用中使用这些值。 "
跨方法调用保持状态是什么意思?
对不起,我的问题很幼稚。
【问题讨论】:
您可以将其视为 Web 应用程序上的 HttpSession。您在 HttpSession 上保存的内容可用于对 Web 服务器的不同请求。同样,您在会话 EJB 中存储为类变量的内容可在同一会话 EJB 上完成的不同方法调用中使用。
参考:
Lookup returns new instance of Stateful session bean http://www.javaworld.com/article/2071724/java-web-development/ejb-fundamentals-and-session-beans.html
【讨论】:
在并发方面,Statefullness 很糟糕。例如,您有一个 Statefull Bean,即存储电子邮件的 UserRegistrationBean,然后如果两个用户尝试在竞争条件下同时注册,则一个用户会覆盖另一个用户的电子邮件。
Statefullness 需要同步访问状态,这是昂贵的。
【讨论】: