Sun Java System Application Server 9.1 管理指南

第 12 章 作業事件

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

關於作業事件

何為作業事件?

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

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

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

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

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

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

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

另請參閱:

J2EE 技術中的作業事件

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

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

另請參閱:

特定資料庫的解決方法

Application Server 藉由回復下列 JDBC 驅動程式的實作,提供一些已知問題的解決方法。除非明確停用,否則會使用這些解決方法。


備註 –

這些解決方法並不意味能支援任何特定的 JDBC 驅動程式。


有關作業事件的管理主控台作業

Application Server 根據管理主控台中的設定來處理作業事件。

配置作業事件

本小節說明如何配置以下作業事件設定:

如需有關作業事件的其他資訊,請參閱以下小節:

Procedure配置 Application Server 如何從作業事件中回復

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

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

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

  1. 在樹形元件中,選取 [配置] 節點。

  2. 選取要配置的實例:

    • 若要配置特定的實例,請選取該實例的配置節點。例如,對於預設實例 server,請選取 [server-config] 節點。

    • 若要配置所有實例的預設設定,請選取 [default-config] 節點。

  3. 選取 [作業事件服務] 節點。

  4. 若要回復未完成的作業事件,請在 [重新啟動時] 欄位中核取 [回復]。

  5. 在 [重試逾時] 欄位中,設定 Application Server 嘗試連線無法存取的伺服器的時間 (以秒為單位)。預設值為 10 分鐘 (600 秒)。

  6. 在 [啟發式決策] 欄位中,為作業事件中無法訪問的伺服器設定策略。

    除非有充分的理由將 [啟發式決策] 欄位設定為 [確定],否則將其保留設定為 [轉返]。確定不確定的作業事件會破壞應用程式的資料完整性。

  7. 設定任何需要的特性。

    按一下 [增加特性] 按鈕,在 [名稱] 和 [值] 欄位中鍵入值,並核取 [名稱] 左側的方塊來啟動該特性。

  8. 按一下 [儲存]。

  9. 重新啟動 Application Server。

Procedure設定作業事件逾時值

依預設,伺服器不會使作業事件逾時。也就是說,伺服器無限期地等待作業事件完成。在為作業事件設定了逾時值後,如果作業事件在配置的時間內未完成,則 Application Server 將回復該作業事件。

  1. 在樹形元件中,選取 [配置] 節點。

  2. 選取要配置的實例:

    • 若要配置特定的實例,請選取該實例的配置節點。例如,對於預設實例 server,請選取 [server-config] 節點。

    • 若要配置所有實例的預設設定,請選取 [default-config] 節點。

  3. 選取 [作業事件服務] 節點。

  4. 在 [作業事件逾時] 欄位中,輸入作業事件逾時之前等待的秒數。

    作業事件逾時的預設值為 0 秒。這將停用作業事件逾時。

  5. 按一下 [儲存]。

  6. 重新啟動 Application Server。

Procedure設定作業事件記錄的位置

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

  1. 在樹形元件中,選取 [配置]s 節點。

  2. 選取要配置的實例:

    • 若要配置特定的實例,請選取該實例的配置節點。例如,對於預設實例 server,請選取 [server-config] 節點。

    • 若要配置所有實例的預設設定,請選取 [default-config] 節點。

  3. 選取 [作業事件服務] 節點。

  4. 在 [作業事件記錄位置] 欄位中輸入作業事件記錄的位置。

    將建立 tx 子目錄,而且作業事件記錄儲存在該目錄下。

    預設值為 ${com.sun.aas.instanceRoot}/logs${com.sun.aas.instanceRoot} 變數是實例的名稱,該變數在啟動 Application Server 實例時設定。若要查看 ${com.sun.aas.instanceRoot} 的值,請按一下 [實際值]。

  5. 按一下 [儲存]。

  6. 重新啟動 Application Server。

Procedure設定關鍵點間隔

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

  1. 在樹形元件中,選取 [配置]s 節點。

  2. 選取要配置的實例:

    • 若要配置特定的實例,請選取該實例的配置節點。例如,對於預設實例 server,請選取 [server-config] 節點。

    • 若要配置所有實例的預設設定,請選取 [default-config] 節點。

  3. 選取 [作業事件服務] 節點。

  4. 在 [關鍵點間隔] 欄位中,輸入關鍵點作業之間的作業事件數目。

    預設值為 2048。

  5. 按一下 [儲存]。

  6. 重新啟動 Application Server。