兩段式確定交易

在 Cloud Foundry 環境的 Liberty 建置套件中停用兩階段確定 (XA) 交易。 依預設,Liberty 交易管理程式會將交易日誌檔寫入本端檔案系統。 因為雲端平台中的本端檔案系統只是暫時存在,當應用程式或 Java 虛擬機器 (JVM) 損毀之後,並沒有交易日誌檔可用。 雖然可配置交易管理程式來使用資料庫服務儲存交易日誌,但雲端平台會在應用程式損毀之後,自動建立應用程式的全新實例。 因此,交易管理程式無法識別使用哪個特定的日誌來回復失敗實例的交易。

兩階段確定交易可以透過 EJB Bean 或應用程式使用 javax.transaction.UserTransaction 類別來使用。 若要在 Cloud Foundry 環境中順利執行,請驗證應用程式是否需要 XA 交易。

依預設,Enterprise JavaBeans (EJB) Bean 是由儲存器管理,且具有 Required 交易屬性,這表示它們使用 JTA 交易。 跨越單一資源的 JTA 交易完全受支援。 跨越多個資源的 JTA 交易需要兩段式確定,在 Cloud Foundry 環境中不受支援。

在 Java 程式碼中,下列明確註釋指出會使用 JTA 交易:

ejb-jar.xml 檔中,下列明確元素指出會使用 JTA 交易:

附註:如果應用程式不使用 javax.transaction.UserTransaction 類別,且應用程式的所有 EJB Bean 由 Bean 管理,或由儲存器管理,並且交易屬性為 "Never" 或 "NotSupported",則應用程式不會使用 XA 交易,因此可忽略此規則的標示。

下列明確註釋或元素指出 EJB Bean 不會使用 XA 交易: