我想知道當SessionScoped CDI bean被鈍化並激活時,注入的EJB-Proxy會發生什麼。有空引用嗎?還是EJB「重新注入」?感謝您的澄清。在SessionScoped CDI Bean中注入無狀態的EJB
1
A
回答
2
節6.6.3。 (鈍化能力的依賴關係)CDI規範指出,無論您聲明無狀態bean是否可序列化,容器都保證無狀態bean是鈍化功能。
規範的第6.6.5節指出,如果鈍化作用域(例如,'@SessionScoped')聲明依賴於非鈍化能力依賴關係,則會在部署時發生錯誤。
容器如何處理重新激活依賴於實現。當代理被反序列化時,它可以使無狀態bean可序列化,或者可序列化的代理和對bean的引用。
2
添加到maress的答案;因爲一個無狀態bean實際上是無狀態的客戶端,所以容器不一定需要序列化任何東西。
對無狀態bean的任何其他調用都可以轉到不同的bean實例,或者其他任何調用都可以創建新的bean實例(如果我沒有弄錯,這是WildFly 8中的默認行爲)。
正如Maress提到的那樣,技術上可以使代理可序列化,但代理通常不會從系統範圍池(可以爲零大小)獲取實際bean *並將所有方法調用委託給該代理。
*)作爲技術細節;代理可能不會直接調用實際的bean,而是調用實際實際Bean之前的攔截器鏈。
相關問題
- 1. 將注入的CDI bean序列化爲有狀態的EJB
- 2. sessionscoped託管bean vs有狀態ejb
- 3. EJB無狀態會話Bean中的CDI bean生產者
- 4. 無法找到EJB無狀態Bean。注入失敗
- 5. Spring的EJB無狀態bean
- 6. 從EJB @Asynchronous調用中訪問CDI SessionScoped bean
- 7. 無狀態EJB未注入消息驅動Bean(MDB)
- 8. 在有狀態EJB中注入無狀態EJB不能按預期工作
- 9. 從無狀態服務設置sessionScoped bean?
- 10. EJB無狀態bean調度
- 11. 將無狀態bean注入單例bean
- 12. Vaadin 7 + EJB集成(如何將有狀態bean注入到servlet)
- 13. 注入EJB到SessionScoped ManagedBean取消部署
- 14. 如何從Filter中獲取SessionScoped CDI bean?
- 15. EJB無狀態會話bean和有狀態會話bean
- 16. 無法在無狀態EJB中注入JMS隊列
- 17. 如何在ManagedBean中注入CDI Bean?
- 18. 如何在無狀態bean中注入ApplicationScoped bean?
- 19. 無法注入CDI Bean休息Easy
- 20. 將無狀態EJB注入JSFmanaged bean導致WAS 8.5中的NullPointer ex
- 21. CDI SessionScoped Bean會產生很多會話
- 22. 從WebSocket @ServerEndpoint使用CDI @SessionScoped bean
- 23. EntityManager未注入無狀態會話Bean
- 24. EJB無狀態會話bean爲空
- 25. @RequestScoped CDI注入到@MessageDriven bean
- 26. 在SystemEventListener中注入CDI受管bean
- 27. 在Servlet中注入CDI會話Bean
- 28. 無狀態EJB與注入更大的EJB實例
- 29. 單身啓動EJB內的本地無狀態EJB注入
- 30. 在@SessionScoped中使用ejb Timer
>當對代理進行反序列化時,對bean的引用被更新了 - 我還沒有調查過每一個EJB實現代理,但從概念上講,我不認爲代理擁有對實際無狀態bean的引用,而只是從池中獲取它的代碼。也就是說,對同一個代理的每個其他調用都可能會轉到不同的bean實例,因此代理保留對特定實例的引用沒有多大意義。 – 2014-09-13 10:05:32