我有一个 RESTFul 服务(由 jersey 实现)。该服务标有@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 捕获异常时,spring 事务代理不会检测到异常被抛出,所以事务不回滚。
有没有办法克服这个问题?