Events @在sessionscoped bean中观察?

Events @在sessionscoped bean中观察?,events,java-ee-6,observer-pattern,cdi,Events,Java Ee 6,Observer Pattern,Cdi,以下情况可能吗 “SessionService”是一个无状态EJB,它触发一个事件“LoggeDineEvent”。调用SessionScoped(Weld)bean“SessionBean”,该bean具有观察LoggeDiEvent的非静态方法,并为该特定用户初始化某些内容 是否调用了“SessionBean”的正确实例?所有实例都被调用了吗?我在文档中找不到任何内容。“正确的实例”是一个有点误导性的措辞 结果是: 调用会话服务(可能由web请求触发) 如果它触发其LoggedInEvent

以下情况可能吗

“SessionService”是一个无状态EJB,它触发一个事件“LoggeDineEvent”。调用SessionScoped(Weld)bean“SessionBean”,该bean具有观察LoggeDiEvent的非静态方法,并为该特定用户初始化某些内容

是否调用了“SessionBean”的正确实例?所有实例都被调用了吗?我在文档中找不到任何内容。

“正确的实例”是一个有点误导性的措辞

结果是:

  • 调用
    会话服务
    (可能由web请求触发)
  • 如果它触发其
    LoggedInEvent
    ,则所有注册的观察者都将以同步方式被调用(这意味着
    SessionService
    不会在所有观察者终止之前终止)
  • 每个包含(非静态)观察者方法的bean都将被实例化(前提是bean范围是活动的——它通常在标准web环境(*)中)。您的
    会话bean将是这种情况。如果-并且仅当-
    SessionBean
    已经在您的活动会话中被实例化(当然,对于web请求,只有一个会话处于活动状态),那么当然会使用这个实例
  • 更多详情请参阅

    所以,要回答你的问题:

    是,将调用正确的实例。为什么?因为容器负责确保只有一个
    SessionBean
    -实例与活动会话作用域相关联

    (*):例如,如果调用是由远程ejb调用触发的,则既不能假定为活动会话,也不能假定为活动会话