我有幾個需要執行的方法調用需要「事務性」,但我不確定如何從try/catch/finally中實現這一點。如何使一系列非數據庫方法模擬事務。
背景
- 申請基於控制檯。
- 應用程序將有多個線程
- 查詢數據庫的連接信息,連接到web服務進行登錄,生成會話ID和更新數據庫。
- 的操作調用註銷,需要清理數據庫,清除會話ID和登錄web服務的出
我試圖找出
我想確保在請求註銷時,我要確保整個過程都是成功的,或者根本不是。例如,我不希望清理數據庫,清除會話標識並註銷操作失敗(因此登錄仍然有效)。
理想情況下,解決方案會在故障時「回滾」,從而確保保持之前的狀態。
是否有一種很好的方法來完成這個任務,或者我堅持使用一系列嵌套的try/catch/finally塊來做到這一點?
這就是我所想的,基本上是try/catch/finally。數據庫中的事務回滾僅適用於數據庫本身,我仍然需要通過臨時變量管理所有其他狀態。 – 2013-05-01 20:47:25
即使使用數據庫事務,您也需要一個try/catch/finally塊,以便在catch中回滾並最終關閉連接。如果您在所有失敗的地方拋出異常,並將其捕獲到最高級別,那麼您可以減少此類塊的數量,並在那裏調用回滾方法。你最後的方法可以清除所有的臨時變量/文件。 – Eran 2013-05-01 20:51:54
是的。我想等待任何其他信息,我將不得不走這條路。啊,沒什麼冒險的,什麼都沒有增加。 – 2013-05-01 20:56:28