2011-07-18 69 views
3

是否有可能通過JTA創建任何類型的自定義資源transactioal?我們假設一個基本示例,並創建一個文件夾,以便在發生錯誤時回滾。與JTA一起使用任意資源

可以處理這樣的自定義資源嗎?

回答

9

是的。該資源需要提供XAResource的實現,並且在使用該資源時該實現的實例需要爲enlisted with the transaction。資源可以get the current transaction from the transaction manager爲了執行註冊時,它被訪問(我認爲)。

您可以查看XADisk的代碼,該代碼顯然是XA事務性文件管理器,以瞭解它在此處的工作方式。但是,在J2EE世界中執行此操作的常見方法不是直接處理JTA,而是使用JCA編寫資源適配器,它使J2EE容器不僅能處理事務,還能處理池,命名和各種操作其他企業細節。然而,JCA API並不完全直截了當,而且儘管困難重重,它還是被一大堆更加困難的文檔所捍衛,其主要目的似乎是爲了防止對它的理解!

+0

當使用Springs TransactionSynchronizationManager時,是否有類似XAResource的機會? – Erik

+0

不知道。我不做Spring。 J2EE已經處理了這個,所以我不明白爲什麼Spring需要在這裏介入。 –