2017-06-20 187 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(無狀態,有狀態,單例等)無法在服務器崩潰後繼續存在。