長期実行要求

長期実行要求は、トランザクションの開始時、またはステートフル サービスの呼び出しが要求された際に開始されます。長期実行要求では、トランザクションが終了するか、またはステートフル処理が不要になった旨の通知がクライアントから送信されるまで、クライアントとサーバー間の接続が維持されます。ただし、長期実行要求がすでに有効な際にトランザクション開始が要求される場合 (ステートフル要求が以前から行われている場合など) や、トランザクションの最初のサービス要求がステートフル サービスの際にトランザクション開始が要求される場合もあります。そのような場合はトランザクションが終了しても、サーバーがステートフル モードで動作しているため、長期実行要求は終了しません。

長期実行要求が開始されると、サービス実行プロセスは、この特定クライアントからの要求のみを処理できます。他のクライアントからの要求にも応答できるように、エンタープライズ サーバーは既存のサービス実行プロセスでステートフル要求の処理が開始するたびに、新しいサービス実行プロセスを開始します。

ステートフル処理が有効な際は、サービス要求が正常に終了しても、アプリケーション コンテナーは初期状態に戻りません。ステートフル処理が不要になった旨の通知をクライアントから受信するまで、アプリケーション コンテナーはクライアント状態のまま複数のサービス要求にわたって維持されます(たとえば、ユーザー プログラムをキャンセルせず、環境変数、チューナー、またはスイッチを初期状態に戻さず、ユーザー ライブラリをアンロードしないなどです)。ステートフル処理が不要になった旨の通知を受信すると、アプリケーション コンテナーは初期状態に戻ります。

サービス要求によってランタイム システム エラーが発生した場合は、ステートフル モードは暗黙的に終了します。

エンタープライズ サーバーは、サービス実行プロセスが設定されたプロセス数を超えないように管理します。このため、ステートフル クライアント要求が完了した際に、エンタープライズ サーバーがサービス実行プロセスを終了させることもあります。