CDI — уведомляется ли вызывающий абонент, когда наблюдатель наблюдает за событием?

Я использую CDI и хочу знать, как вызывающая сторона уведомляется о том, что наблюдатель наблюдал событие или нет. Если на это событие не действуют наблюдатели, то я хочу что-то сделать. Я не вижу, чтобы это было задокументировано где-либо в документации, кроме намека на то, что вызывающая сторона уведомлена.

Спасибо,

Уолтер


person Community    schedule 02.10.2010    source источник


Ответы (1)


Я не думаю, что вызывающий абонент уведомлен (на самом деле это не то, о чем шаблон наблюдателя). Но вы можете попробовать обойти это следующим образом:

  • вы можете иметь поле одного объекта события - private boolean consumed и установить его в true, если оно потребляется. Затем (события обрабатываются синхронно) в источнике событий проверьте эту переменную.

  • запуск нового события от наблюдателей, за которым наблюдает производитель событий

  • Если вы хотите отказаться от преимущества слабой связи и точно знаете, кто является источником события, вы можете @Inject передать его всем слушателям и позволить им вызывать для него метод.

person Bozho    schedule 02.10.2010
comment
это не то, о чем шаблон наблюдателя, на самом деле +1 только для этого - person Pascal Thivent; 02.10.2010
comment
Правда, я думаю, как к тому, что я хочу сделать. - person ; 02.10.2010