WebLogic JTA プログラマーズ ガイド
![]() |
![]() |
![]() |
![]() |
単一のリソース マネージャにのみローカルなトランザクション。1 つのデータベースにのみ関連するトランザクションなど。
複数のサーバと 1 つまたは複数のリソースが関与するグローバル トランザクション。分散トランザクション環境では、クライアント アプリケーションは複数のサーバにリクエストを送信し、その結果、複数のリソース マネージャでリソースが更新されます。トランザクションを完了するには、各参加コンポーネント (クライアント、サーバ、およびリソース マネージャ) のトランザクション マネージャをポーリングして、ドメイン内の各参加コンポーネントのコミット プロセスを調整する必要があります。
外部トランザクション マネージャ (WebLogic Server など) によって管理されるトランザクション。複数のサーバまたは複数のリソースが関与する場合があります。トランザクションは、処理の原子単位として調整されます。すべての参加コンポーネントは、トランザクション全体をコミットまたはロールバックします。
グローバル トランザクションをサポートする、各リソース マネージャの内部処理ユニットは、厳密には 1 つのトランザクション ブランチの一部です。トランザクション マネージャがリソース マネージャに提供する各グローバル トランザクション識別子 (GTRID または XID) によって、分散トランザクションと個々のブランチの両方が識別されます。
ヒューリスティックな決定 (またはヒューリスティックな終了) は、更新をコミットするかロールバックする分散トランザクションの終了段階でリソースが一方だけの決定を行ったときに発生します。これにより、分散されたデータは不確定な状態のままになります。ヒューリスティックな決定の原因としては、ネットワークの障害またはトランザクションのタイムアウトが考えられます。
トランザクションに参加する 1 つのリソースが、準備してコミットの決定を待つことに同意しているにもかかわらず、処理のロールバックを自発的に決定した場合。トランザクション マネージャがトランザクションのコミットを決定すると、そのリソースによるヒューリスティックなロールバックの決定は不正になり、トランザクションの他のブランチはコミットされるため、矛盾した結果を招きます。
トランザクションに参加する 1 つのリソースが、準備してコミットの決定を待つことに同意しているにもかかわらず、処理のコミットを自発的に決定した場合。トランザクション マネージャがトランザクションのロールバックを決定すると、そのリソースによるヒューリスティックなコミットの決定は不正になり、トランザクションの他のブランチはロールバックされるため、矛盾した結果を招きます。
トランザクションが、参加リソースの一部がコミットし、一部がロールバックするという混合した結果になったことを、トランザクション マネージャで認識している場合。主に、1 つまたは複数の参加リソースが、ヒューリスティックなロールバックまたはヒューリスティックなコミットを決定したことが原因で発生します。
トランザクションが、参加リソースの一部がコミットし、一部がロールバックするという混合した結果になったことを、トランザクション マネージャで認識している場合。ただし、システムまたはリソースに障害があるため、HeuristicMixed の結果が確かに発生したかどうかを確認できない場合。主に、1 つまたは複数の参加リソースが、ヒューリスティックなロールバックまたはヒューリスティックなコミットを決定したことが原因で発生します。
![]() |
![]() |
![]() |