![](/img/trans.png)
[英]Java EE inject CDI @SessionScoped into EJB @Stateless session bean
[英]Inject a Stateless EJB in a SessionScoped CDI Bean
我想知道,當SessionScoped CDI bean被鈍化然后激活時,注入的EJB-Proxy會發生什么。 是否有空引用? 還是EJB被“重新注入”? 感謝您的澄清。
第6.6.3節。 CDI規范(具有鈍化能力的依賴項)指出,無論您聲明無狀態Bean是否可序列化,容器均確保無狀態Bean具有鈍化能力。
規范的第6.6.5節指出,如果鈍化作用域(例如'@SessionScoped')聲明了對非鈍化能力的依賴關系,則部署時會發生錯誤。
容器如何處理重新激活取決於實現。 當代理反序列化時,它可以使無狀態Bean可序列化,也可以使代理可序列化,並且對Bean的引用也可以更新。
增添了maress的答案; 由於無狀態Bean實際上是針對客戶端的無狀態的,因此容器不一定必須為其序列化任何內容。
無論如何,對無狀態bean的所有其他調用都可以轉到另一個bean實例,或者其他每個調用都可以導致創建新的bean實例(如果我沒有記錯的話,這是WildFly 8中的默認行為)。
正如maress提到的那樣,從技術上講,代理可以被序列化,但是代理通常所做的只是從系統范圍的池(可以為零大小)中獲取實際的bean *,並將所有方法調用委托給它。
*) 作為技術細節; 代理可能不會直接調用實際的bean,而是在調用實際的bean之前調用攔截器鏈
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.