【问题标题】:Exception thrown in jax-rs ResponseFilter doesn't cause rollbackjax-rs ResponseFilter 中抛出的异常不会导致回滚
【发布时间】:2020-04-15 08:36:13
【问题描述】:

我正在为容器管理事务的自动回滚而苦恼。我知道在抛出异常时,这应该会自动发生,但不知何故,这不会发生。

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

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

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

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

【问题讨论】:

    标签: java transactions jax-rs resteasy


    【解决方案1】:

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

    为了解决这个问题,我重新设计了我的解决方案,以便从带有 @AroundInvokeÌntegercepter 中抛出异常。这似乎是自动回滚的时间,并且允许我避免在 ContainerResponseFilter 中引发更多异常

    【讨论】:

      猜你喜欢
      • 2013-11-20
      • 2016-01-06
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多