事务期间触发的CDI事件范围



来自Weld文档:

事件期间接收它们的事件通知在事件所处的事务完成阶段之前或之后长大。

这是否意味着在事务期间触发的CDI事件的范围仅限于该事务?

我想是的,但是我只是想确保当事务完成时我不必做任何清理。

我想你有点误解了这个概念。

没有所谓的"事件范围"。事务的故事如下—您有一个事务方法,并在该方法中触发一个事件。在你的应用程序的某个地方,你有观察者,它们有观察这个事件所需的类型,它们也被绑定到某个事务阶段。

在实践中,这意味着当事务达到给定状态时,这样的观察者将被通知-不早也不晚:

    public void observeAfterCompletion(@Observes(during = AFTER_COMPLETION) Foo someEvent) {
        // this will be notified once the transaction reached AFTER_CEMPLETION stage
    }
    public void observeBeforeCompletion(@Observes(during = BEFORE_COMPLETION) Foo event) {
        // this will be notified once the transaction reaches BEFORE_COMPLETION stage
    }

有关事务何时达到给定状态的更多信息,您需要查看JTA规范,而不是CDI。

当一个事务完成时,我不需要做任何清理。

不,你没有。在标准事件之后不需要清理任何东西,这里也不需要。