Как объединить события @Asynchronous и Weld / CDI и @Observe (в течение = TransactionPhase.AFTER_COMPLETION) в Glassfish 3.1 - PullRequest
6 голосов
/ 29 апреля 2011

Прежде всего, позвольте мне заявить, что следующий пример кода прекрасно работает в 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.

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

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

1 Ответ

3 голосов
/ 14 августа 2013

Согласно ссылке , которую вы разместили в качестве комментария к своему собственному вопросу, эта ошибка была исправлена ​​в Wield 1.1.2 и GlassFish 3.1.2 (сборка 14+).

disclamer : я отправил этот ответ на старый вопрос, чтобы помочь SO (StackOverflow) избавиться от оставшихся без ответа вопросов.

...