2017-06-20 147 views
0

我正在检查EJB有状态bean,使用此bean的典型示例位于购物车中。恢复会话EJB

因此,在该示例中,所做的是检查HttpSession中是否存在EJB,如果不存在,则调用一个EJB实例,然后使用HttpSessionId作为标识符上载到会话。

那么,当我可以使用简单的POJO来完成相同的操作时,使用有状态的EJB有什么优势?

我想典型的答案是,即使HttpSession失效,EJB仍然存在于服务器容器中。如果这是真的,我该如何从EJB池中恢复该EJB?因为我没有HttpSessionID了。

是否有另一种方法来恢复生活在容器中的EJB?

回答

1

在http会话中托管的有状态EJB的购物车在我看来是典型的例子,不应该做一个非常简单的理由:一个网上商店的目的是增加流量和数量(付费)用户。不建议在这种网站上使用有状态的bean,它不会扩展。

有状态Bean是属于桌面应用领域的东西,例如Swing,JavaFX等......它与在线www商店无关。

当然,将会话保存在一个会话中比持有数据的有状态bean轻得多。

我想不出有什么技巧可以恢复一个有状态的EJB,一旦你放弃了它的引用。

另外,你是什么意思与“如果会话下降”?如果你的意思是由于服务器崩溃,请记住,如果EJB驻留在同一台服务器上,那么EJB(无状态,有状态,单例等)无法在服务器崩溃后继续存在。