2013-06-02 99 views
2

正如我在例子中看到的,即使沒有在其中定義和使用http會話,每個java類都可以定義爲ejb中的會話bean。那麼,他們爲什麼稱爲會話bean?爲什麼會話bean被調用?

+1

嗯,它不叫'HttpSessionBean'。還有其他會議。 – Keppil

+0

的確,「會話」!=「HTTP會話」。 「會話」只是可以發生多個密切相關的請求/對話/查詢等的上下文。對於EJB,必須在單個數據庫事務的上下文中解釋單個「會話」(而在HTTP的情況下,必須在單個瀏覽器實例的上下文中解釋單個會話)。相關:http://stackoverflow.com/questions/8887140/jsf-request-scoped-bean-keeps-recreating-new-stateful-session-beans-on-every-req/8889612#8889612 – BalusC

回答

2

會話bean爲客戶端執行操作(例如計算或數據庫訪問)。 。會話bean對象既可以是無狀態的,也可以保持跨方法和事務的對話狀態。

無狀態會話 bean是一個對象不具有關聯的會話狀態,但可能有實例狀態

有狀態會話bean,實例變量代表了唯一的客戶端bean的會話的狀態。客戶端與bean的交互被稱爲會話狀態。

無論會話bean是否爲state或有狀態,它們都會保留某種會話,這可能會持續一次調用,也可能持續多個bean調用。因此它們被稱爲會話bean。

1

他們也可能不太準確,被稱爲「交易」豆。每個入口點方法都是在與後端系統隔離的會話環境中執行的,後端系統通常是但不一定是數據庫。

相關問題