2011-02-27 118 views
3

(假設手動徵募和資源的delistment。)JTA數據源,而不交易

我有一個號碼啓用XA資源/數據源爲此,我打算執行的事務更新的。此外,一些啓用XA的數據源可以獨立更新(無需任何其他資源)。

假設我已經犯了一些交易的一個數據源入伍,我可以再忽略單邊更新數據源的事務管理。

難道我根本就沒有啓動一個全球性的事務,並直接在資源本身犯?假設這是正確的方法,我可以隨後在沒有副作用的事務中使用資源嗎?

感謝,

克里斯

回答

3

XA-資源支持 XA。不是需要。因此,完全可以通過支持XA的資源啓動非XA事務,並在本地提交它。

第二個問題是不太清楚。將本地事務下的資源添加到XA事務中?不確定它是否受支持的用例。或者問題是「在我提交本地文件後,我可以將資源添加到XA事務嗎?」。是的你可以。

讓我們以實例數據庫連接的例子。當通過連接啓動本地事務時,事務ID僅存在於數據庫中。提交時,該ID已消失,並且連接恢復到原始狀態,即不在任何事務中。連接可以添加到任何XA事務中。

現在,當你開始XA事務,多個連接(例如,來自在集羣不同的JVM)可共享相同的事務ID,並且從圖DB點它們是在同一事務中。如果你有一個本地事務,這對於數據庫它自己的事務ID另一個連接,你會怎麼添加連接(更重要的是,改變內它使)到現有的XA用不同的ID?這將是一個混亂的業務,我相信不被支持。