狀態會話bean定義如下:何時使用無狀態會話Bean來使用有狀態會話Bean?
狀態會話Bean對象的狀態由它的值的實例變量的 的。在有狀態會話Bean中,實例 變量表示唯一客戶端Bean會話的狀態。因爲 客戶端與其bean交互(「會談」),這個狀態通常被稱爲會話狀態 。
無狀態會話bean定義如下:
無狀態會話Bean無狀態會話Bean不維護與客戶端的 會話狀態。當客戶端調用無狀態bean的 方法時,bean的實例變量可能包含特定於該客戶端的狀態 ,但僅在 調用的持續時間內。該方法完成後,不應保留客戶端特定狀態 。但是,客戶端可能會更改共用無狀態bean中的實例變量 的狀態,並且此狀態將保留爲 ,直到下一次調用共用無狀態bean。除方法調用期間的 以外,無狀態bean的所有實例均爲 等效,允許EJB容器將實例分配給任何 客戶端。也就是說,無狀態會話bean的狀態應該適用於所有客戶端的 。
它也提到無狀態會話bean的優點如下:
因爲無狀態會話bean可以支持多個客戶端,他們可以爲需要大量客戶端的 應用 提供更好的可擴展性。通常,應用程序需要比有狀態會話Bean更少的無狀態會話 bean來支持相同數量的 客戶端。
所以我想到的問題是什麼時候應該使用有狀態會話bean?爲了我對這個問題的天真理解,我們應該堅持儘可能地使用無狀態會話bean。
應該使用有狀態會話bean的應用程序是什麼?任何好的例子?
相關:http://stackoverflow.com/questions/8887140/jsf-request-scoped-bean-keeps-recreating-new-stateful-session-beans-on-every-req – BalusC