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