交易观察员在此期间收到他们的事件通知 在事件发生的交易完成阶段之前或之后 被提出来了。
这是否意味着在交易期间触发的CDI事件的范围仅限于该交易?
我想是的,但我只是想确保在交易完成后我不必进行任何清理。
答案 0 :(得分:1)
我认为你有点误解了这个概念。
没有"事件范围"。事务的故事如下 - 您有一个事务方法,在该方法中,您触发一个事件。在您的应用程序的某个地方,您有观察者,他们具有观察此事件所需的类型,并且他们也受到某个事务阶段的约束。
在实践中,这意味着,当交易达到给定状态时,将立即通知此类观察员 - 不久之后也不会:
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。
交易完成后,我不必进行任何清理工作。
不,你没有。标准事件后你不能清理任何东西,也不需要在这里做任何事情。