Java 如何在spring中回滚事务时发送异常消息?
我有一个spring Web服务,其中我有一个DAO,其中有一个方法add(),该方法用@Transactional注释,如下所示:Java 如何在spring中回滚事务时发送异常消息?,java,web-services,spring,jakarta-ee,transactions,Java,Web Services,Spring,Jakarta Ee,Transactions,我有一个spring Web服务,其中我有一个DAO,其中有一个方法add(),该方法用@Transactional注释,如下所示: class MyDAOClass { @Transactional(rollbackFor = Exception.class) add(){ doAdd1(); doAdd2(); doAdd3(); } ... doAdd2() throws MyException
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>
SOAP-ENV:服务器
事务已回滚,因为它已标记为仅回滚
别客气。我发现了问题。我的服务类也被注释为@Transactional。在我删除此批注后,问题得到解决。我只是为那些可能想知道他们为什么会得到这个消息的人保留它。我认为一个好的设计是让服务方法应该是事务性的,而不是daomethod@SubinS如果我以后必须在add()之后执行一些其他方法,即使add()回滚也应该执行这些方法,如果我使用事务性的服务方法,这是可能的吗?在这种情况下,让它们分开服务方法