Как объединить события @Asynchronous и Weld / CDI и @Observe (во время = TransactionPhase.AFTER_COMPLETION) в Glassfish 3.1

Прежде всего позвольте мне заявить, что следующий пример кода отлично работает в GF 3.0.1. Проблемы начались, когда мы перешли на GF 3.1.

Я использую метод

@Asynchronous
public void executeFlowStep(
    @Observes(during=TransactionPhase.AFTER_COMPLETION) 
    ExecuteFlowStepEvent executeFlowStepEvent) { 

Начиная с переключателя, всякий раз, когда он должен получать событие ExecuteFlowStepEvent , я получаю следующее сообщение об ошибке:

WELD-000401 Failure while notifying an observer of event [package].ExecuteFlowStepEvent

Никакой дополнительной информации или трассировки стека не дается. Это сработает, если я удалю аннотацию @Asynchronous и атрибут AFTER_COMPLETION , конечно, это нарушит работу программы, поскольку я зависим от времени AFTER_COMPLETION .

I пытался попросить о помощи на форумах Weld, но безрезультатно, хотя, похоже, есть и другие люди с такой же проблемой: http://seamframework.org/Community/WeldUsers

Мне бы, по крайней мере, хотелось знать: Это ошибка или это нужно? Означает ли это, что Weld НЕ работает с асинхронными методами / атрибутами AFTER_COMPLETION? Почему это работало в GF 3.0.1? Кому-нибудь удалось сделать эту работу на GF 3.1?

6
задан palacsint 19 February 2014 в 16:35
поделиться