2011-11-30 65 views
5

我想將記錄從一個數據庫移動到另一個位於不同計算機上的數據庫。記錄應該從第一個數據庫中刪除並以原子方式插入第二個數據庫。如何實現在j2ee中長時間運行的分佈式事務

我們可以用xa嗎? 我相信xa使用了兩階段提交算法,它需要對資源進行阻塞鎖定。目標數據庫是一個EIS數據庫,所以它應該被鎖定最短時間。

+0

你是指「長時間運行」嗎?小時 ?天 ? –

+0

都是oracle數據庫嗎?如果是這樣,使用dblink可能是一個選項。這個connectin將在你的數據庫層。這可以通過一個過程或一個plsql來調用。 – techuser

回答

0

XA在鎖定機制上沒有任何發生。它只是確保即使您更新兩個單獨的事務資源,ACIDity也會保留。如果我理解正確,你的用例只會更新一個,所以XA在這裏不是必需的。

+0

如果不是xa,還有什麼? –

+0

本地交易。您正在更新單個數據庫。數據是來自GUI還是形成另一個數據庫並不重要。完全像使用其他更新數據庫的用例一樣使用目標數據庫。 –

+0

如果我使用本地事務,那麼有可能數據被提交給目標,但不能從源中清除。 –

1

XA確實是一個2階段提交阻止協議,但在我的情況下,只有兩個實體用第一個實體進行非常快速的調用。所以2PC將爲我效力。

對於更一般的場景,可以使用3階段提交。這是一個非阻塞協議。雖然不'似乎有任何Java規格。

也遇到了BTP和http://jotm.objectweb.org/jotm-btp.html 不知道它與JDBC適配器的融合程度如何。

相關問題