2016-12-07 82 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