当ExceptionMapper映射异常时,Spring事务不会回滚

时间:2013-08-25 09:24:53

标签: spring rest jersey

我有一个RESTFul服务(由泽西实施)。该服务标有@Transactional。

我像这样声明了一个ExceptionMapper:

@Provider
public class ThrowableMapper implements ExceptionMapper<Throwable> {
    private static final Logger log = Logger.getLogger(ThrowableMapper.class);

    public Response toResponse(Throwable ex) {
        log.error("throwable", ex);
        return Response.status(500).entity("Internal Error").type("text/plain").build();
    }
}

当未声明exceptionmapper时,事务是回滚。 但是,当我有一个ExceptionMapper事务时,提交没有回滚。

我假设事务没有回滚的原因是因为ExceptionMapper捕获异常时弹出事务代理dosnt检测到异常被抛出,因此事务不会回滚。

有没有办法克服这个问题?

1 个答案:

答案 0 :(得分:0)

这不是最干净的解决方案,但没有找到任何其他解决方案。 我将它添加到ExceptionMapper:

TransactionAspectSupport.currentTransactionStatus( ).setRollbackOnly();