2010-05-05 24 views
3

我有一個將結果寫入數據庫(SQL Server)和電子表格(POI)的Java程序,如果兩者都寫入如果兩者都有錯誤。如何將數據庫寫入和電子表格分組寫入單個「事務」

如果生成電子表格,然後在保存到數據庫時發生錯誤,那麼情況會更糟糕,所以我首先進行數據庫寫入。即便如此,我想知道是否有人知道如何保證他們作爲一個整體成功或失敗。

謝謝!

回答

5

考慮Java Common Transaction,其中有一個File Transaction component

如果你可以在一個更大的包含事務的文件事務中包裝數據庫調用和文件寫入,你可能會有你正在尋找的東西。

更多的http://commons.apache.org/transaction/file/index.html

+0

拋出一些XA做兩個階段提交,你就完成了! http://matthewneale.net/2008/11/27/an-xa-filesystem/ – Guillaume 2010-05-05 16:09:03

+0

TxFileResourceManager是否在非事務處理文件系統上工作? – 2010-05-05 18:12:14

+0

+1爲了向我展示我想在3天前爲自己實施的一些事情... – Daniel 2010-05-05 18:15:26

0

目前,我們用下面的辦法進行發送在交易電子郵件:這些電子郵件被寫入到數據庫表中的事務中,以及輔助線程需要出來,並異步發送。後者可以重試幾次,這讓我們確信電子郵件如果可以的話就離開了。與調用報告服務器,傳真服務器等相同。

1

使用XA事務在同一事務中包含文件系統操作和數據庫操作(因此使它們成爲原子)。 SQL Server已經支持XA;對於使用XA啓用的文件系統事務,使用XADisk

相關問題