2013-02-25 64 views
0

按照Oracle文檔...Singletone EJB不應該保持狀態

辛格爾頓會話bean提供了類似的功能,無國籍 會話bean但他們在不同的是隻有一個每個應用單 會話bean ,而不是無狀態 會話bean池,其中任何一個都可以響應客戶端請求。像 無狀態會話bean,單例會話bean可以實現web 服務端點。

辛格爾頓會話bean保持其狀態客戶端之間調用 ,但並不需要在服務器保持其狀態 崩潰或停機。

爲什麼Singleton會話bean在主調用之間維持其狀態?據我所知,一旦調用完成,無狀態/單身都應該被清理! 請解釋。

回答

1

你在混淆段落。它說singleton會話bean提供與無狀態會話bean類似的功能。它並不是說他們無國籍。你從哪裏得到Singletons必須在兩次調用之間清理的信息?這是不真實的。在您的應用程序中使用單例的一個原因是,您可以保存狀態並在應用程序中保持一致。可以使用哪些單身人士的例子在日誌或用於存儲應用程序範圍的配置信息。請參閱wikipedia頁面以獲取更多信息。

+0

哦!這意味着我認爲所有會話都有一個單一的bean(即使它被清楚地提及,但我的錯誤),但是每個會話都是單一的bean。那麼這可能是事實。 我對這一行感到困惑:「Singleton會話bean提供與無狀態會話bean類似的功能」。無論如何,謝謝。我知道了。 – sHAILU 2013-02-26 03:18:29

2

答案在您的文章中可能是您​​從哪裏得到報價的上述段落。其每個應用程序有一個實例它遵循Singleton模式...

http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html#gipim

辛格爾頓會話Bean可在單會話bean一次 每個應用程序實例化,並針對存在的應用程序的生命週期。 單一會話bean專爲在客戶端訪問並同時共享 單一企業bean實例的環境而設計。

辛格爾頓會話bean提供了類似的功能,無國籍 會話bean,但是從他們的不同只存在一個每應用單 會話bean,而不是無狀態 會話bean池,其中的任何可能的迴應客戶端請求。像 無狀態會話bean,單例會話bean可以實現web 服務端點。

單身會話bean在客戶端 之間保持其狀態,但不需要在服務器 之間保持其狀態,以防崩潰或關閉。

使用一個單獨的會話bean的應用程序可以指定 單應在應用程序啓動,這 允許單身執行初始化任務的 應用實例化。單身人士也可以在關機應用程序 上執行清理任務,因爲單身人士將在應用程序的整個生命週期中運行。

+0

它不清楚與該文檔,這就是爲什麼我發佈! 如果stateless/singleton是相同的,那麼爲什麼singleton應該有客戶端狀態? – sHAILU 2013-02-25 04:50:16

+0

他們不一樣。單例對每個應用程序實例化一次,並存在應用程序的生命週期。當您在Bean池中查找無狀態bean時,將創建一個無狀態bean,並在完成後將返回到Bean池。所以不管你查了多少次單例,你都會得到同樣的bean ......這對於無狀態來說並不是真的。它遵循Singleton設計模式。 – ZeusSelerim 2013-02-26 01:17:13