2013-06-21 350 views
3

有狀態會話Bean和HTTP會話之間是否有任何關係? 什麼是我們需要有狀態會話bean的用例以及哪些用例需要HTTP Session。 我可以公開一個有狀態會話bean作爲一個寧靜的Web服務嗎?有狀態會話Bean和HTTP會話

+3

你混合蝙蝠和戰鬥監守既有共同點 – Freak

+0

怪胎感謝你的回答有「蝙蝠」
HTTPSession中使用了,我明白了一個Java的是HTTP會話狀態和會話狀態bean在commong中沒有任何東西。您是否介意給我用例,何時使用http會話bean與有狀態會話bean請 –

+0

我認爲您仍然不太瞭解它因爲主要的是它們都有不同的目的。無論如何,請參閱編輯答案 – Freak

回答

3

HTTP是無狀態協議這意味着它是服務器和客戶端之間的實際傳輸協議 - 是「無狀態,因爲它會記住調用之間沒有
現在首先閱讀這是什麼HTTPSession的,什麼是會議豆(記住,會話bean使用,以維護多個請求中的數據狀態,主要是一個會話bean是有狀態會話bean,因爲它擁有橫跨整個會話數據)

HTTP會話
HttpSession對象可持有跨多個請求的會話狀態來自同一個客戶。換句話說,它會持續與特定客戶進行整個會話。 我們可以使用它來存儲客戶端在客戶端進行的所有請求中獲得的所有內容。
會話Beanwiki
在Java平臺企業版規範,一個會話Bean是一種企業Bean.A會話bean的執行操作,如計算或數據庫訪問,客戶端。雖然會話bean可以是事務性的,但如果發生系統崩潰,它將無法恢復。會話bean對象既可以是無狀態的,也可以保持跨方法和事務的對話狀態。如果會話bean維護狀態,那麼如果必須從內存中刪除對象,則EJB容器將管理此狀態。但是,會話bean對象本身必須管理自己的持久數據。

簡單的說就是
會話跟蹤是維護網站訪問者在頁面間移動時的信息或狀態的過程。由於沒有內置的機制,它需要Web開發人員進行一些工作。從瀏覽器到Web服務器的連接發生無國籍超文本傳輸​​協議(HTTP)

SFSB的是在多次調用同一個會話bean(即一個會話)設計用於管理客戶端狀態了。如果你看看JBoss Seam,你會發現SFSB在對話環境中的使用非常繁重。
在EJB3中,不存在「無狀態優於有狀態會話bean」的情況。例如,一個提供像信用卡處理器(無狀態)的服務,一個提供多屏幕嚮導用例(有狀態)的處理。

在我看來使用HttpSession和無狀態會話bean來管理狀態是非常困難和有問題的。

編輯:的HTTPSession是使用時保持會話等的用戶會話
跟蹤比如你想創建一個登錄,退出機制,那麼,你一定HttpSession中,因爲當用戶將開始不同頁面之間的導航那麼這個HttpSession中會記住世衛組織正在尋求網頁,否則它是不可能的(因爲HTTP是一個無狀態的協議)
現在在會話中,你只需設置用戶名和密碼的會話,你檢查每個頁面,如果這個會話存在,然後顯示頁面

現在如果您需要通過多個請求發送該用戶的大量信息?在這種情況下,您將在有狀態會話bean中設置所有這些信息
但現在,在現代框架會話以及信息中,所有內容都存儲在會話Bean中,因爲從會話Bean中很容易管理它們。當我們是純粹的Servlet和莫名其妙JSP技術

+0

只需閱讀有關JAVA EE6的文章,它就會說CDI和會話應用註釋,託管bean可以在Web應用程序中的多個HTTP請求中持久存在。因此,在我看來,HTTP會話功能可以實現通過託管bean或HTTP會話 –

+0

是的,您可以這樣做。您在會話bean中使用「有狀態會話Bean」的術語在EJB中使用,術語「託管Bean」在JSF中用於會話Bean。 – Freak