10.7.7. トランザクションにおけるヒューリスティックな結果の処理方法

この手順では、Java Transaction Service (JTS) を使用して JTA トランザクション (ローカルまたは分散) でヒューリスティックな結果を処理する方法を示します。分散トランザクションを使用する場合は、ORB を設定する必要があります。ORB 設定の詳細については、『管理および設定ガイド』の項 『ORB 設定』 を参照してください。
ヒューリスティックな結果はよく発生するものではなく、通常は例外的な原因があります。ヒューリスティック という言葉は「手動」を意味し、こうした結果が通常処理される方法です。トランザクションのヒューリスティックな結果については、「ヒューリスティックな結果について」を参照してください。

手順10.5 トランザクションでのヒューリスティックな結果の処理方法

  1. 原因を突き止める

    トランザクションのヒューリスティックな結果の全体的な原因は、リソースマネージャーがコミットまたはロールバックの実行を約束したにも関わらず、失敗したことにあります。原因としては、サードパーティーコンポーネント、サードパーティーコンポーネントと JBoss Enterprise Application Platform 間の統合レイヤー、JBoss Enterprise Application Platform 自体に問題がある可能性があります。
    ヒューリスティックなエラーの最も一般的な原因として圧倒的に多いのが、環境の一時的な障害とリソースマネージャーを扱うコードのコーディングエラーの 2 つです。
  2. 環境内の一時的な障害を修正する

    通常、環境内で一時的な障害が発生した場合は、ヒューリスティックなエラーを発見する前に気づきます。原因としては、ネットワークの停止、ハードウェア障害、データベース障害、電源異常、その他多くの可能性があります。
    ストレステストの実施中にテスト環境でヒューリスティックな結果が発生した場合は、使用している環境の脆弱性に関する情報が提供されます。

    警告

    JBoss Enterprise Application Platform は、障害発生時に非ヒューリスティックな状態にあるトランザクションの自動回復を行いますが、ヒューリスティックなトランザクションの回復は試行しません。
  3. リソースマネージャーのベンダーに連絡する

    明らかに使用している環境に障害がない場合や、ヒューリスティックな結果が容易に再現可能な場合は、コーディングエラーである可能性があります。サードパーティーのベンダーに連絡して、解決方法の有無を確認してください。JBoss Enterprise Application Platform のトランザクションマネージャー自体に問題があると思われる場合は、Red Hat グローバルサポートサービスにご連絡ください。
  4. テスト環境の場合は、ログを削除して JBoss Enterprise Application Platform を再起動する

    テスト環境である場合や、データの整合性を気にしない場合は、トランザクションログを削除して JBoss Enterprise Application Platform を再起動すると、ヒューリスティックな結果はなくなります。デフォルトのトランザクションログの場所はスタンドアロンサーバーでは EAP_HOME/standalone/data/tx-object-store/、管理ドメインでは EAP_HOME/domain/servers/SERVER_NAME/data/tx-object-store になります。管理ドメインの SERVER_NAME は、サーバーグループに参加している個々のサーバー名になります。
  5. 手作業で結果を解決する

    トランザクションの結果を手作業で解決するプロセスは、障害の厳密な状況によって大きく左右されます。通常は、以下の手順に従い、それぞれの状況に適用してください。
    1. 関連するリソースマネージャーを特定する。
    2. トランザクションマネージャーの状態とリソースマネージャーを調べる。
    3. 関与する 1 つ以上のコンポーネント内でログのクリーンアップとデータ調整を手動で強制する。
    これらの手順を実行する方法の詳細は、本書の範囲外となります。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。