Я думаю, вы слегка неправильно поняли концепцию.
Нет такой вещи, как «область событий». История транзакций выглядит следующим образом: у вас есть транзакционный метод, и в рамках этого метода вы запускаете событие. Где-то в вашем приложении у вас есть наблюдатели, у которых есть тип, необходимый для наблюдения за этим событием, и они также связаны с определенной фазой транзакции.
Это на практике означает, что такой наблюдатель будет уведомлен, когда сделка не достигнет заданного состояния - не раньше и не позже:
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.
Невозможно выполнить очистку при завершении транзакции.
Нет, вы этого не сделаете. Вы не чистите что-либо после стандартного мероприятия, вам тоже не нужно это делать.