是否可能出现以下情况?
“SessionService”是一个无状态EJB,它触发一个事件“LoggedInEvent”。调用具有观察LoggedInEvent的非静态方法的SessionScoped(Weld)bean“SessionBean”,并为该特定用户初始化一些内容。
是否调用了“SessionBean”的正确实例?所有实例都被调用了?我在文档中找不到任何内容。
答案 0 :(得分:6)
“正确的实例”是一种略带误导的措辞。
这是怎么回事:
SessionService
(可能由Web请求触发)。 LoggedInEvent
,则以同步方式调用所有已注册的观察者(意味着SessionService
在所有观察者终止之前不会终止)。SessionBean
的情况。如果 - 并且仅当 - SessionBean
已经在您的活动会话中实例化 (当然只有一个会话活动关于Web请求),那么当然会使用此实例。spec。
中的更多详细信息所以,回答你的问题:
是的,将调用正确的实例。为什么?因为容器的责任是确保只有一个SessionBean
- 实例与活动会话范围相关联。
(*):如果调用是由远程ejb调用触发的,则既不能采用活动会话也不能采用活动会话......