2010-07-26 97 views

回答

1

你是指不同的數據源?

當然可以。這是JTA的目的。

只要確保所涉及的數據源的驅動程序是XA認可的。


編輯 我明白你的意思了。

我開發的應用程序具有這樣的功能。假設您的請求處理例程有一些基本的流程控制或處理程序結構,那麼您總是可以爲錯誤處理部分啓動一個新的事務,提交新的事件並回滾原來的事件。

使用Spring +聲明式事務的控制,你需要有錯誤處理程序周圍宣佈爲交易,用REQUIRES_NEW傳播策略

+0

嗨阿德里安......如果我的數據源不是XA-awared ..那麼會有什麼問題。 – 2010-07-26 10:55:53

+0

嗯,是的......除非你有其他的方式來在事務的「入伍」數據源中執行兩階段提交。 – 2010-07-26 11:46:49

+0

我的意思是..假設我使用hibernate和數據源作爲連接提供程序..但對於一種情況,我需要回滾完整的執行..但要插入到一個表中的時間..和一些細節...我認爲使用數據源連接,並使用簡單的過程插入到表中使用PreparedStatement ...會有任何關於連接的問題.. – 2010-07-26 14:47:29

0

此基礎上你想要的,有效的,自治事務登錄失敗的評論,您可以使用數據源中的第二個連接,並在回滾原始失敗的連接時進行確認(不需要XA;問題中的措辭表明您希望同時提交兩個連接);或者如果您可以在回滾之前使用實際的autonomous transaction來處理原始連接內的日誌記錄。這可能更簡單和更清晰,尤其是如果您的失敗真的來自套餐通話,因爲它可以在發生故障時處理,而不是讓客戶擔心。大綱:

PROCEDURE log_failure(...) 
IS 
    PRAGMA AUTONOMOUS_TRANSACTION; 
BEGIN 
    insert ... 
    commit; 
END log_failure;