我正在努力对容器管理的交易进行自动回滚。我知道抛出异常时应该自动发生,但是以某种方式却没有发生。
要清楚,我有一个JAX-RS ContainerResponseFilter
,它会抛出某种RuntimeException(我不能抛出一个检查异常,因为那意味着我需要指定“ throws”,这无法完成)在一种实现方法上)。
[当我自己打电话给sessionContext.setRollbackOnly()
时,交易确实回滚了,但我真的不想自己处理。
我尝试将异常标记为@ApplicationException(rollback=true)
,但这没有什么区别。
有什么想法吗?这是在带有RestEasy的JBOSS 7.2上。
我无法确认这是预期的行为,但是ContainerReponseFilter
中的任何手动回滚都为时已晚,因为该事务已经提交。
为了解决问题,我重新设计了解决方案,以使用Ìntegercepter
从@AroundInvoke
内部抛出异常。这似乎是时候进行自动回滚了,我可以避免在ContainerResponseFilter