我有一个 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>