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调用触发,则既不能假定活动会话也不能激活对话...