長期実行要求

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

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

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

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

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