使用有狀態EJB時,如果客戶端沒有活動會話,服務器如何知道EJB與誰關聯?我以前使用過無狀態的EJB,但現在正在嘗試學習如何使用有狀態的EJB。我正在考慮將我的購物車作爲一個有狀態的EJB來實現,而不是將POJO Cart作爲用戶會話中的一個屬性添加。但是由於有狀態的EJB沒有明確地作爲HttpSession中的一個屬性添加,所以服務器如何將客戶端與有狀態的EJB相關聯?有狀態EJB與會話屬性
2
A
回答
1
EJB在技術上並不需要需要才能訪問客戶端的JSESSION_ID,因爲就像任何基本的POJO一樣,只要呼叫客戶端處於活動狀態,它就是活的且可用的。一旦調用客戶端被破壞或以其它方式放棄對SFSB的控制下,豆易於被鈍化或破壞(並且因此「忘記」談話)
的狀態被保持爲客戶端/ bean會話的持續時間。如果 客戶端刪除該bean,則會話結束並且狀態 消失。這種狀態的短暫性不是問題, 然而,因爲當客戶端和bean 兩端之間的對話,就沒有必要保留狀態
想起來了,你弄個同樣的方式一個普通java對象的關係:一旦你將組合對象設置爲null,你基本上已經結束了與該對象的對話。這裏同樣適用(有點)。客戶端不需要將特定的會話信息傳遞給EJB。 EJB的正常生命週期和註釋(特別是@Remove
)會照顧其他所有內容。
有關SFSB的警告:它們是重量級的,它們比SLSB持續時間更長。除非您確實需要全面的EJB標記,否則不要使用它們。在很多情況下,一個普通的HttpSession和一個SLSB就足夠了。
進一步閱讀
+0
注意事項不一定是正確的。有些模式可以與SFSB一起使用,讓您可以擴展應用程序以避免由SLSB引發的鍋爐代碼和貧血模型。除非您真的擁有*許多*用戶,否則Oracle文檔稱不會過度使用SLSB – Sergio 2014-09-27 13:18:38
相關問題
- 1. EJB無狀態會話bean和有狀態會話bean
- 2. 使用有狀態會話bean(EJB)
- 3. EJB訪問有狀態會話Bean NameNotFoundException
- 4. EJB 3.1丟棄有狀態會話bean
- 5. EJB 2.1有狀態會話bean
- 6. EJB無狀態會話bean爲空
- 7. AVAssetWriter多個會話和狀態屬性
- 8. 狀態EJB不保留屬性值
- 9. 如何使用JPA映射有狀態的ejb 3.1會話bean
- 10. 有狀態會話EJB的真實世界用例
- 11. 有狀態會話Bean和HTTP會話
- 12. 無狀態會話bean的ejb攔截器,我如何調用有狀態會話bean
- 13. 有狀態會話Bean vs無狀態會話Bean
- 14. WSO2 BRS有狀態會話
- 15. 封裝有狀態會話
- 16. 會話狀態
- 17. 會話狀態
- 18. EJB Spec 3.1有狀態轉換狀態
- 19. '沒有會話或會話關閉' 與JPA 2和EJB 3.1
- 20. 有狀態EJB的問題 - 爲所有用戶保留一個會話
- 21. ASP.NET會話狀態的性能基準
- 22. 瞭解EJB中無狀態企業會話Bean的功能
- 23. 無狀態會話中的事務回滾EJB 3.0
- 24. EJB 3.1 ClassCastException glassfish服務器上的無狀態會話Bean
- 25. EJB中的幫助創建無狀態會話Bean
- 26. EJB無狀態會話Bean - 無法創建錯誤
- 27. 獨立EJB客戶端本地無狀態會話bean查找
- 28. EJB無狀態會話Bean中的CDI bean生產者
- 29. 用「純」類覆蓋EJB 3無狀態會話bean的方法
- 30. 會話狀態CLOSED_LOGIN_FAILED
服務器無法與客戶端的會話,除非它已被添加(或使用了'@ Inject'和有狀態會話bean是'@關聯SessionScoped')。什麼讓你覺得它是? – 2014-09-26 03:31:06
我認爲,在有狀態EJB的情況下,當我在有狀態EJB中發出請求來運行一個方法時,同一個bean正在爲一個客戶端提供服務,所以我不確定bean和那個1客戶端之間的連接是什麼。 – user1154644 2014-09-26 20:16:02
有狀態會話bean在客戶端執行查找時創建。從查找返回的代理包含某種特定的bean實例的引用/ ID,因此當客戶端在代理上進行後續調用時,它將連接回特定的bean實例。 – 2014-09-26 23:05:47