CDI 事件,其传播范围

arg*_*g20 5 java session cdi

这是我遇到的一个反复出现的问题,我认为 CDI 事件也许可以帮助我,但我不确定。

我有两个用户在一个网站上进行交互,我希望他们共享一个 bean 实例,这样他们就可以共享一个活动。到目前为止,我知道如何做到这一点的唯一方法是将数据推送到数据库,然后使用两个不同的 bean,每个用户一个,不断检查更改。

我的问题是,如果 sessionscoped bean 观察到一个事件,当我触发它时,每个用户的每个 sessionbean 都会得到通知吗?还是只有活动用户的会话 bean?。因为那样我就可以使用观察者来保持两个用户同步的对象。但是我真的不认为这是它的工作方式,因为如果我有一千个会话触发一个事件将导致 1000 次方法调用......

我的另一个解决方案是一个巨大的应用程序范围的 bean,它为两个用户保存活动对象,然后对它所做的任何更改都可以传达给用户,但是,我仍然必须扫描这个对象,我错过了什么吗?

cov*_*ner 3

您不会像这样免费获得它,因为当事件被触发时,当前线程只有一个会话处于活动状态,并且[如果非静态]调用观察者方法的实际对象是从活动中获得的语境。