我有一个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>
答案 0 :(得分:0)
没关系。我发现了这个问题。我的服务类也用@Transactional注释。删除此注释后问题解决了。我只是为那些可能想知道他们为何得到这个信息的人保留它。