2
是否可能出現以下情況?@觀察sessionscoped bean嗎?
作爲無狀態EJB的「SessionService」觸發事件「LoggedInEvent」。 SessionScoped(Weld)bean「SessionBean」具有觀察LoggedInEvent的非靜態方法,併爲該特定用戶初始化一些事情。
是否調用了「SessionBean」的正確實例?所有實例都被調用了嗎我在文檔中找不到任何東西。
是否可能出現以下情況?@觀察sessionscoped bean嗎?
作爲無狀態EJB的「SessionService」觸發事件「LoggedInEvent」。 SessionScoped(Weld)bean「SessionBean」具有觀察LoggedInEvent的非靜態方法,併爲該特定用戶初始化一些事情。
是否調用了「SessionBean」的正確實例?所有實例都被調用了嗎我在文檔中找不到任何東西。
「正確的實例」是一個有點誤導性的措辭。
什麼情況是這樣的:
SessionService
被調用(可能是一個Web請求觸發)。LoggedInEvent
,則所有註冊的觀察者都以同步方式被調用(這意味着在所有觀察者終止之前SessionService
不會終止)。SessionBean
的情況。如果 - 且僅當 - SessionBean
已在您的活動會話(當然只有一個會話在Web請求中處於活動狀態)下實例化,則當然會使用此實例。更多詳細資料在spec。
因此,要回答你的問題:
是的,正確的實例將被調用。爲什麼?因爲容器的責任是確保只有一個SessionBean
-instance與活動會話作用域相關聯。
(*):如果調用例如由遠程ejb調用觸發,則既不能假定活動會話也不能激活對話...