“iswitch”パラメタに“object”を設定されたインプリメンテーションのサーバアプリケーションに対してバインド関係が登録されているオブジェクトを使用している場合、バインド関係が登録されているプロセスにリクエストが振り分けられます。
バインド関係が登録されていないオブジェクトを使用し、サーバアプリケーションの各プロセスに登録されているバインド数がすべて等しい場合は、通常のCORBAサーバアプリケーションと同じ論理でリクエストは振り分けられます。
バインド関係が登録されていないオブジェクトを使用し、バインド数が異なる場合は、バインド数が最も少ないプロセスにリクエストが振り分けられます。このとき、振り分け先のプロセスのリクエスト処理スレッドが空いていない場合、他のプロセスに空きスレッドがあっても、振り分け先のプロセスのリクエスト処理スレッドが空くまでリクエストは滞留します。
例
リクエストが滞留する場合の例
以下のような場合にリクエストが滞留します。
サーバアプリケーションの各プロセスのバインド数が以下の場合とします。
サーバアプリケーションプロセスA:バインド数3
サーバアプリケーションプロセスB:バインド数2
サーバアプリケーションプロセスC:バインド数2
上記のような状態で、クライアントからバインド関係が登録されていないオブジェクトを使用した場合、プロセスBにリクエストが振り分けられますが、バインド数に変化がないため、次のバインド関係が登録されていないオブジェクトを使用したリクエストもプロセスBに振り分けられます。このとき、プロセスBのリクエスト処理スレッドが空いていない場合、リクエストが滞留することになります。
リクエストの滞留が起きないようにするには、バインド関係が登録されていないリクエストを受け付けるサーバアプリケーションを作成し、サーバアプリケーションへのリクエストを別々に行うようにしてください。