Прежде всего позвольте мне сказать, что следующий пример кода отлично работал в 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
.
Я пытался обратиться за помощью на форум Weld, пока безрезультатно, хотя, кажется, есть и другие люди с такой же проблемой: http://seamframework.org/Community/WeldUsers
Я по крайней мере хотел бы знать: это ошибка, или это нужно. Означает ли это, что Weld НЕ работает с асинхронными методами/атрибутами AFTER_COMPLETION? Почему это работало в GF 3.0.1? Кому-нибудь удалось заставить это работать на GF 3.1?