2011-06-14 50 views
1

免責聲明:我只是有怎樣的Web服務工作的一個非常基本的理解,不知道多少有關高級WS主題,交易等如何安全地處理使用Web服務處理的在線支付?

讓我們假設我正在開發使用Java EE的在線商店, JPA等。另外假設我與在線支付處理提供商簽有合同來處理付款,並且他們爲我提供了一個WS API。

現在讓我們假裝客戶已下了訂單。在會話bean中(例如,在OrderSB.placeOrder之內),我打開了一個事務,在數據庫中保存了一個訂單,現在我正在調用付款提供商的WS API。它成功返回(我假設現在我的客戶的帳戶已被扣除),但在我可以保存訂單的關聯付款(訂單和付款之間存在一對一關係)之前,發生異常並且我的交易被回滾。

如何確保發生此類異常時,我的客戶賬戶不會被扣除?換句話說,WS調用和OrderSB.placeOrder都應該成功完成並提交,或者兩者都應該一起回滾。

如果WS調用失敗,很容易回滾placeOrder,但我不知道如何在返回後回滾WS調用。

回答

0

爲什麼不完成placeOrder流程,並在第一次完成成功時執行WS調用?然後如您所說易於回滾placeOrder,如果錯誤出現在第二個回滾第一個。或者我不理解你的問題嗎?