交易事務超時注意事項

2021-08-26 13:27:26 字數 542 閱讀 1577

交易超時後,事務內的查詢語句將失效,也就是說一旦發生交易超時,即使是事務內的sql查詢語句也會被阻塞,不能再獲得返回結果。

所以不要希望有交易超時後,在事務回滾之前,找到還沒有回滾的資料,利用這些資料進行抹帳操作。

正確的做法是,交易超時前,儲存變數到交易上下文環境中,當交易超時時,利用儲存的流水號來進行抹帳操作。

不正確的流程:

①系統a交易開始-》②傳送記帳報文到b系統-》③b系統正確返回報文(有識別id,如流水號)-》④系統a儲存識別id到資料表->⑤系統a進行後續處理,事務交易超時-》⑥在表中根據交易流水號查詢識別id->⑦利用識別id,傳送抹帳報文到系統b

該流程將在第⑥步失敗,而無法繼續下去,查詢識別id時丟擲異常而使後續處理失敗。

正確的工作流程:

①系統a交易開始-》②傳送記帳報文到b系統-》③b系統正確返回報文(有識別id,如流水號)-》④系統a儲存識別id到交易上下文->⑤系統a進行後續處理,事務交易超時-》⑥利用識別id,傳送抹帳報文到系統b

上述流程經過實際驗證,能較好的解決涉及兩個系統的交易事務問題,避免單邊帳的產生。

事務注意事項

注意事項 1.在需要事務管理的地方加 transactional註解。transactional 註解可以被應用於介面定義和介面方法 類定義和類的 public 方法上。transactional註解只能應用到 public 可見度的方法上。如果你在 protected private 或者 pac...

事務的注意事項

a.乙個功能是否要事務,必須納入設計 編碼考慮。不能僅僅完成了基本功能就ok。b.如果加了事務,必須做好開發環境測試 測試環境也盡量觸發異常 測試回滾 確保事務生效。c.以下列了事務使用過程的注意事項,請大家留意。1.不要在介面上宣告 transactional 而要在具體類的方法上使用 trans...

EJB 事務注意事項

在上篇文章我們提到 當執行多個事務的時候 並且這些事務方式資料庫中的相同資料會出現一系列的併發問題 這些問題彙總起來總共有以下幾類.丟失更新 撤銷乙個事務時,把其他事務已提交的更新資料覆蓋。髒讀 乙個事務讀到另乙個事務為提交的更新資料。不可重複讀 乙個事務讀到另乙個事務已提交的更新資料。幻像讀 乙個...