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

标签 java transactions jax-rs resteasy

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

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

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

我尝试将异常标记为 @ApplicationException(rollback=true) 但这没有什么区别。

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

最佳答案

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

为了解决这个问题,我重新设计了我的解决方案,使用 @AroundInvokeÌntegercepter 中抛出异常。这似乎及时进行了自动回滚,并且允许我避免在 ContainerResponseFilter 中抛出进一步的异常。

关于java - jax-rs ResponseFilter 中抛出的异常不会导致回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61224547/

相关文章:

Java List.add() 和 Map.put()

java - ColdFusion 实体加载过滤条件生成 java 错误

java - Logstash + Kibana 术语面板,不打断单词

java - JTA - 交易如何注册?

mysql - Hibernate/MySQL 并发问题

rest - JAX-RS:验证 JSON 和 XML (RESTEasy)

java - Ember POST 请求在 JAX-RS 中使用 XML Jersey 响应进行响应

java - 如何使用有偏权重将 x 变量之间的总值 1 相除

java - 如何向 Wink 客户端注册 Jackson 提供程序?

java - 使用 JTA 和 JPA EntityManager 关闭自动事务启动