0

我有一个 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() 方法抛出异常时,事务被回滚,而不是 "My Exception Message" ,我在客户端收到以下错误消息:

<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>

4

1 回答 1

0

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

于 2012-11-16T17:47:31.597 回答