如何在春季回滚事务时发送异常消息?

时间:2012-11-16 17:47:32

标签: java web-services spring java-ee transactions

我有一个Spring Web服务,我有一个带有一个方法add()的DAO,它用@Transactional注释如下:

class MyDAOClass {

    @Transactional(rollbackFor = Exception.class)
    add(){
        doAdd1();
        doAdd2();
        doAdd3();
    }

    ...

    doAdd2() throws MyException {
        throw new MyException ("My Exception Message");
    }

    ...

}

服务层:

现在,当我调用webservice时,服务层在内部调用此类的add()方法。服务层捕获MyException e并获取消息并放入响应对象,该对象被编组并发送回客户端。但是,当doAdd2()方法抛出异常时,事务将被回滚,而不是“我的异常消息”,我在客户端获得以下错误消息:

<SOAP-ENV:Body>
  <SOAP-ENV:Fault>
     <faultcode>SOAP-ENV:Server</faultcode>
     <faultstring xml:lang="en">Transaction rolled back because it has been marked as rollback-only</faultstring>
  </SOAP-ENV:Fault>

1 个答案:

答案 0 :(得分:0)

没关系。我发现了这个问题。我的服务类也用@Transactional注释。删除此注释后问题解决了。我只是为那些可能想知道他们为何得到这个信息的人保留它。