Исключение, выброшенное в jax-rs ResponseFilter, не вызывает отката - PullRequest
0 голосов
/ 15 апреля 2020

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

Чтобы было ясно, у меня есть JAX-RS ContainerResponseFilter, который генерирует какое-то RuntimeException (я могу не выбрасываю проверенное исключение между прочим, так как это означает, что мне нужно указать «throws», что невозможно сделать с помощью метода реализации).

Когда я сам вызываю sessionContext.setRollbackOnly(), транзакция выполняется в самом деле, но я действительно не хочу с этим справляться.

Я пытался пометить исключение как @ApplicationException(rollback=true), но это не имеет значения.

Есть идеи? Это на JBOSS 7.2 с RestEasy.

1 Ответ

0 голосов
/ 17 апреля 2020

Мне не удалось подтвердить, что это предполагаемое поведение, но любой откат вручную в ContainerReponseFilter слишком поздний, так как транзакция уже была совершена.

Чтобы устранить проблему, я переработал мое решение, чтобы исключить из Ìntegercepter с @AroundInvoke. Похоже, что это вовремя для автоматического отката, и позволяет мне избежать дополнительных исключений в ContainerResponseFilter

...