2016-12-07 51 views
0

让我们说我想打两个电话:一个服务A,第二个服务B如何使Web服务的调用链交易?

我该如何在交易方式下拨打这两个电话?例如,我打电话给服务A(它将一些数据插入到数据库中),然后我尝试致电服务B,但是失败;当我打电话给服务A时,我应该如何回滚插入?

我应该调用“回滚”方法吗?

如果这个调用不起作用呢?

回答

0

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 
    } 
} 
+0

不幸的是,因为不回滚在服务器端进行的插入这并没有回答我的问题。你所做的只是开一个新的交易,这不是我要求的。谢谢! – Aditzu

+0

为什么你要分开你的依赖服务。您可以创建C服务并使用C方法调用A和B方法。并添加到C @事务。 –

+0

我们假设这些是外部服务,因此不能合并 – Aditzu