CDI 1.1: Должен ли @Observe @Initialized (TransactionScoped.class) работать? - PullRequest
0 голосов
/ 29 августа 2018

CDI 1.1: @Observes @Initialized(TransactionScoped.class) должен работать?

@ApplicationScoped
public class MyClass {
public void processConversationScopedInit(@Observes 
  @Initialized(TransactionScoped.class) Object payload) {}

  public void processConversationScopedDestroyed(@Observes 
  @Destroyed(TransactionScoped.class) Object payload) {}
}

Это стандартная область действия в CDI 1.1, но она явно отсутствует в этом списке здесь:

http://www.next -presso.com / 2014/06 / вы-думаете, что Вы знаете, все-о-КДИ-события-думаете, опять-таки /

Я не могу заставить его работать в TomEE 7.0.5 / OpenWebBeans, и мне любопытно, если это просто недосмотр в спецификации. Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Да, так как это не требуется и потенциально добавляет значительные накладные расходы, которых можно избежать, используя уже предоставленное событие области запроса, тогда это не было добавлено в tomee.

Проблема, когда вы начинаете реализовывать что-то из javax. * Не указано, что пользователи будут думать, что это портативно, когда на самом деле это неправильно, поэтому лучше соблюдать спецификацию, когда это возможно. ИМХО.

0 голосов
/ 29 августа 2018

@TransactionScoped - это , а не - это стандартная область, в которой она не реализована CDI (или, ну, в общем, подразумевается CDI). Это происходит от JTA , и у него также есть их пакет - javax.transaction.

При этом, он должен вести себя как все другие @NormalScope контексты и, следовательно, должен запускать события @Initialized, чтобы вы могли их наблюдать. Хотя обратите внимание, что спецификация CDI рекомендует только , сказав:

Портативные расширения рекомендуется вызывать событие с квалификатором @Initialized (X.class) при инициализации пользовательского контекста и событие с квалификатором @Destroyed (X.class) при уничтожении пользовательского контекста, где X - это тип области видимости, связанный с контекстом. Подходящая полезная нагрузка события должна быть выбрана.

Я сам не пробовал это сделать, но готов поспорить, что это работает для большинства современных реализаций. С другой стороны, вы находитесь в CDI 1.1, который сейчас довольно древний.

...