0
让我们说我想打两个电话:一个服务A
,第二个服务B
。如何使Web服务的调用链交易?
我该如何在交易方式下拨打这两个电话?例如,我打电话给服务A
(它将一些数据插入到数据库中),然后我尝试致电服务B
,但是失败;当我打电话给服务A
时,我应该如何回滚插入?
我应该调用“回滚”方法吗?
如果这个调用不起作用呢?
让我们说我想打两个电话:一个服务A
,第二个服务B
。如何使Web服务的调用链交易?
我该如何在交易方式下拨打这两个电话?例如,我打电话给服务A
(它将一些数据插入到数据库中),然后我尝试致电服务B
,但是失败;当我打电话给服务A
时,我应该如何回滚插入?
我应该调用“回滚”方法吗?
如果这个调用不起作用呢?
Spring框架提供了一个基于事务管理API的不同 的抽象层。
阅读: http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html
@Transactional(readOnly = true)
public class DefaultFooService implements FooService {
public Foo getFoo(String fooName) {
// do something
}
// these settings have precedence for this method
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void updateFoo(Foo foo) {
// do something
}
}
不幸的是,因为不回滚在服务器端进行的插入这并没有回答我的问题。你所做的只是开一个新的交易,这不是我要求的。谢谢! – Aditzu
为什么你要分开你的依赖服务。您可以创建C服务并使用C方法调用A和B方法。并添加到C @事务。 –
我们假设这些是外部服务,因此不能合并 – Aditzu