Sun Java System Application Server Enterprise Edition 8.2 管理指南

第 11 章 作業事件

透過將一個或多個步驟納入不可分的工作單元,作業事件可確保資料的完整性和一致性。本章包括下列小節:

何為作業事件?

作業事件是應用程式中一系列嚴密的動作,所有動作必須成功完成,否則每個動作中的所有變更會被撤消。例如,將資金從支票帳戶轉入儲蓄帳戶是一項作業事件,步驟如下:

  1. 檢查支票帳戶是否有足夠的資金來支付此轉帳操作。

  2. 如果支票帳號中有足夠的資金,則將該筆資金記入此帳號的借方。

  3. 將這些資金記入儲蓄帳戶的貸方。

  4. 將此次轉帳記錄到支票帳戶記錄中。

  5. 將此次轉帳記錄到儲蓄帳戶記錄中。

如果這些步驟的任何一個步驟失敗,則必須撤消在前面的步驟中所做的所有變更,而且支票帳戶和儲蓄帳戶的狀態必須與它們在作業事件開始之前的狀態相同。該事件稱為回復。如果所有步驟均成功完成,則該作業事件處於已確定狀態。作業事件以確定或轉返狀態結束。

J2EE 技術中的作業事件

J2EE 技術中的作業事件處理包括以下五個參與者:

透過實作不同的 API 和功能,每個實體均有助於提高作業事件處理的可靠性,如下所述:

恢復作業事件

由於伺服器當機或資源管理員當機,作業事件可能未完成。完成這些中斷的作業事件並將其從故障中恢復至關重要。Application Server 可在伺服器啟動時從這些故障中回復並完成作業事件。

執行恢復作業時,如果無法訪問某些資源,則伺服器重新啟動作業可能被延遲,因為伺服器正在嘗試恢復作業事件。

如果作業事件跨伺服器進行,啟動此作業事件的伺服器會連絡其他伺服器以獲得作業事件的結果。如果無法訪問其他伺服器,則該作業事件將使用 [啟發式決策] 欄位來確定結果。

可以使用 Admin Console 配置 Application Server,以回復作業事件。有關執行這項作業的詳細程序,請參閱 Admin Console 線上說明。

作業事件逾時值

依預設,伺服器不會使作業事件逾時。也就是說,伺服器無限期地等待作業事件完成。在為作業事件設定了逾時值後,如果作業事件在配置的時間內未完成,則 Application Server 將回復該作業事件。有關執行這項作業的詳細步驟,請參閱 Admin Console 線上說明。

作業事件記錄

為了保持被呼叫資源的資料完整性,同時為了能夠從故障中恢復,作業事件記錄將記錄有關每個作業事件的資訊。作業事件記錄儲存在 [作業事件記錄位置] 欄位所指定目錄的 tx 子目錄中。這些記錄無法進行人為讀取。

關鍵點間隔

關鍵點作業可壓縮作業事件記錄檔。關鍵點間隔是指記錄上關鍵點作業之間的作業事件數目。關鍵點作業可以減小作業事件記錄檔的大小。關鍵點間隔數越大 (例如,2048),作業事件記錄檔也越大,但關鍵點作業較少,效能可能更佳。關鍵點間隔越小 (例如,256),記錄檔也越小,而同時由於關鍵點作業較為頻繁,效能會略微降低。