このトピックでは、COM+、トランザクション インテグレーター (TI)、CICS で Microsoft 分散トランザクション コーディネーター (DTC) によって処理されている間の 2 フェーズ コミット (2PC) トランザクションの動作について説明します。
このプロセスは、クライアント アプリケーションが TI オブジェクトを含む .NET アプリケーションでメソッドを呼び出すと開始されます。 その後、.NET はユーザー スレッド プールからトランザクションのスレッドを割り当て、トランザクションを開始し、メソッドの入力パラメーターを TI ランタイム環境に渡します。 このスレッドは、CICS ホストから応答が戻るまで、トランザクションに対してブロックされます。 これは作業時間の単位であり、主に CICS アプリケーションがトランザクションのビジネス ロジックを処理し、必要に応じてデータベースにアクセスするのに要する時間で構成されます (伝送速度が LAN 速度に追いついていると仮定します)。 メソッドの出力パラメーターがホストから .NET に返送されると、コミット メッセージが DTC に送信されます。
DTC はトランザクションの準備フェーズをアクティブ化し、TI は 2PC スレッド プールからスレッドを割り当て、要求コミット メッセージがホストから到着するまでブロックしたままにします。 トランザクションのすべてのフォークが準備されると、DTC はコミット完了メッセージを .NET に送信し、メソッドの出力パラメーターと戻り値を呼び出し元のクライアント アプリケーションに送信し、スレッドを解放します。
これでユーザーのトランザクションは完了しますが、トランザクション モニター (DTC と CICS) はコミットの 2 番目のフェーズを完了する必要があります。また、コミットの 2 番目のフェーズを実行するトランザクションごとに TI 2PC スレッド プールのスレッドが割り当てられます。