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
中抛出更多异常
我正在努力解决容器管理事务的自动回滚问题。我知道当抛出异常时,这应该会自动发生,但不知何故,这并没有发生。
明确地说,我有一个 JAX-RS ContainerResponseFilter
,它会抛出某种 RuntimeException(顺便说一句,我不能抛出已检查的异常,因为那意味着我需要指定 "throws" ,这不能在实现方法上完成)。
当我自己调用sessionContext.setRollbackOnly()
时,事务确实回滚了,但我真的不想自己处理。
我尝试将异常标记为 @ApplicationException(rollback=true)
,但这并没有什么不同。
有什么想法吗? 这是在 JBOSS 7.2 和 RestEasy 上。
我无法确认这是预期的行为,但是 ContainerReponseFilter
中的任何手动回滚都为时已晚,因为事务已经提交。
为了解决这个问题,我修改了我的解决方案以从 Ìntegercepter
和 @AroundInvoke
中抛出异常。这似乎是自动回滚的时间,并且允许我避免在 ContainerResponseFilter