簡體   English   中英

在SessionScoped CDI Bean中注入無狀態EJB

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM