我想知道當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. sessionscoped託管bean vs有狀態ejb
- 2. Spring的EJB無狀態bean
- 3. 從EJB @Asynchronous調用中訪問CDI SessionScoped bean
- 4. 從無狀態服務設置sessionScoped bean?
- 5. 在有狀態EJB中注入無狀態EJB不能按預期工作
- 6. 注入EJB到SessionScoped ManagedBean取消部署
- 7. EJB無狀態會話bean和有狀態會話bean
- 8. 無法在無狀態EJB中注入JMS隊列
- 9. 如何在ManagedBean中注入CDI Bean?
- 10. 無法注入CDI Bean休息Easy
- 11. CDI SessionScoped Bean會產生很多會話
- 12. @RequestScoped CDI注入到@MessageDriven bean
- 13. 無狀態EJB與注入更大的EJB實例
- 14. 單身啓動EJB內的本地無狀態EJB注入
- 15. CDI,有狀態會話bean,無狀態會話bean,pojo和不同作用域之間的關係
- 16. 「無法ejbRef轉換爲EJB」 關於CDI(焊接)注入@Stateless的EJB到Glassfish的
- 17. 啓動EJB不注射時SessionScope CDI Bean的初始化
- 18. 在其他SessionScoped Bean在JSF2/CDI中更新之前調用@PostConstruct?
- 19. JSF託管bean EJB注入
- 20. 託管bean EJB注入
- 21. JAX-RS使用的無狀態EJB中的@Context注入
- 22. 訪問CDI SessionScoped bean在Java 8並行流中不起作用
- 23. CDI SessionScoped在容器內JUnit測試中的POJO
- 24. CDI注入EJB會導致NullPointerException
- 25. 如何將EJB注入抽象CDI類?
- 26. 如何爲EJB方法設置超時(在無狀態bean中)
- 27. 在EJB無狀態bean中需要幫助
- 28. CDI中的PostConstruct SessionScoped託管的豆子
- 29. @從EJB項目注入bean給出UnsatisfiedResolutionException
- 30. Hibernate EntityManager沒有注入到無狀態EJB中
>當對代理進行反序列化時,對bean的引用被更新了 - 我還沒有調查過每一個EJB實現代理,但從概念上講,我不認爲代理擁有對實際無狀態bean的引用,而只是從池中獲取它的代碼。也就是說,對同一個代理的每個其他調用都可能會轉到不同的bean實例,因此代理保留對特定實例的引用沒有多大意義。 – 2014-09-13 10:05:32