作業事件是應用程式中一系列嚴密的動作,所有動作必須成功完成,否則每個動作中的所有變更會被撤消。例如,將資金從支票帳戶轉入儲蓄帳戶是一項作業事件,步驟如下:
檢查支票帳戶是否有足夠的資金來支付此轉帳操作。
如果支票帳號中有足夠的資金,則將該筆資金記入此帳號的借方。
將這些資金記入儲蓄帳戶的貸方。
將此次轉帳記錄到支票帳戶記錄中。
將此次轉帳記錄到儲蓄帳戶記錄中。
如果這些步驟的任何一個步驟失敗,則必須撤消在前面的步驟中所做的所有變更,而且支票帳戶和儲蓄帳戶的狀態必須與它們在作業事件開始之前的狀態相同。該事件稱為回復。如果所有步驟均成功完成,則該作業事件處於已確定狀態。作業事件以確定或轉返狀態結束。
另請參閱:
J2EE 技術中的作業事件處理包括以下五個參與者:
透過實作不同的 API 和功能,每個實體均有助於提高作業事件處理的可靠性,如下所述:
作業事件管理員提供支援作業事件分隔、作業事件資源管理、同步化及作業事件上下文傳遞所需的服務和管理功能。
Application Server 提供支援應用程式執行階段環境 (包括作業事件狀態管理) 所需的基礎架構。
資源管理員 (透過資源配接卡) 提供應用程式對資源的存取權。資源管理員加入分散式作業事件的方法,是實作由作業事件管理員使用的作業事件資源介面,以針對作業事件關聯、作業事件完成以及回復工作進行通知。 關聯式資料庫伺服器便是這樣一個資源管理員。
資源配接卡是一個系統層級的軟體程式庫,應用程式伺服器或用戶端可使用該程式庫連線到資源管理員。不同資源管理員通常有專屬的資源配接卡。它可以做為程式庫,在使用它的用戶端位址空間中使用。JDBC 驅動程式便是此類資源配接卡的一個範例。
開發用於應用程式伺服器環境的作業事件使用者應用程式使用 JNDI 來查找作業事件資料源及作業事件管理員 (可選)。應用程式可以使用企業 Bean 的宣告性作業事件屬性設定或明確的程式化作業事件分隔。
另請參閱:
Application Server 藉由回復下列 JDBC 驅動程式的實作,提供一些已知問題的解決方法。除非明確停用,否則會使用這些解決方法。
Oracle thin 驅動程式 - 不論輸入旗標為何,XAResource.recover 方法都會重複傳回有問題的相同 Xids 集。根據 XA 規格,作業事件管理程式最初使用 TMSTARTSCAN 呼叫此方法,然後使用 TMNOFLAGS 重複呼叫,直到不傳回 Xids 為止。XAResource.commit 方法也有一些問題。
若要停用 Application Server 解決方法,請將 oracle-xa-recovery-workaround 特性值設定為 false。如需有關如何設定特性的詳細資訊,請參閱配置 Application Server 如何從作業事件中回復 。
這些解決方法並不意味能支援任何特定的 JDBC 驅動程式。