jax-rs ResponseFilter 中抛出的异常不会导致回滚

Exception thrown in jax-rs ResponseFilter doesn't cause rollback

我正在努力解决容器管理事务的自动回滚问题。我知道当抛出异常时,这应该会自动发生,但不知何故,这并没有发生。

明确地说,我有一个 JAX-RS ContainerResponseFilter,它会抛出某种 RuntimeException(顺便说一句,我不能抛出已检查的异常,因为那意味着我需要指定 "throws" ,这不能在实现方法上完成)。

当我自己调用sessionContext.setRollbackOnly()时,事务确实回滚了,但我真的不想自己处理。

我尝试将异常标记为 @ApplicationException(rollback=true),但这并没有什么不同。

有什么想法吗? 这是在 JBOSS 7.2 和 RestEasy 上。

我无法确认这是预期的行为,但是 ContainerReponseFilter 中的任何手动回滚都为时已晚,因为事务已经提交。

为了解决这个问题,我修改了我的解决方案以从 Ìntegercepter@AroundInvoke 中抛出异常。这似乎是自动回滚的时间,并且允许我避免在 ContainerResponseFilter

中抛出更多异常