クライアントアプリケーションは、サーバメソッド呼出し時にサーバとのコネクションを接続します。サーバメソッド呼出しごとにコネクション接続処理が動作しなくても済むように、接続されたコネクションは維持されます。しかし、クライアントとサーバのコネクションが維持された状態は通信資源を使用しているため、サーバ側のクライアントから受付け可能なコネクション数超過の要因にもなります。
ここでは、コネクションを切断し、通信資源を解放する機能について説明します。
サーバ側無通信監視機能
サーバ側無通信監視機能により、サーバにおける無通信状態(クライアントからのリクエスト送信なし)を監視できます。監視時間を超過してもクライアントからのリクエスト送信がない場合、クライアントとのコネクションを切断して通信資源を解放します。なお、インプリメンテーションリポジトリへの登録時にiswitchパラメタに“ON”が設定されたサーバアプリケーション呼出しに使用したコネクションの場合は、監視時間を超過してもコネクションを切断しません。
CORBAサービスの動作環境ファイル(config)のperiod_idle_con_timeoutパラメタ、またはInterstage管理コンソールの[CORBAサービスの詳細設定]の“サーバ側無通信監視時間”パラメタで、そのシステムにおけるサーバ側無通信監視時間を設定します。詳細については、“チューニングガイド”または“Interstage管理コンソール ヘルプ”を参照してください。
クライアント側無通信監視機能
クライアント側無通信監視機能により、クライアントにおける無通信状態(サーバへのリクエスト送信なし)の監視できます。監視時間を超過してもサーバへのリクエスト送信がない場合、サーバとのコネクションを切断し通信資源を解放します(注)。なお、サーバ側無通信監視機能と異なり、インプリメンテーションリポジトリへの登録時にiswitchパラメタに“ON”が設定されたサーバアプリケーション呼出しに使用したコネクションでも、監視時間を超過した場合はコネクションを切断します。
CORBAサービスの動作環境ファイル(config)のperiod_client_idle_con_timeoutパラメタ、またはInterstage管理コンソールの[CORBAサービスの詳細設定]の“クライアント側無通信監視時間”パラメタで、そのシステムにおけるCORBAアプリケーションのクライアント側無通信監視時間を設定します。詳細については、“チューニングガイド”または“Interstage管理コンソール ヘルプ”を参照してください。
Portable-ORBの場合は、porbeditenvコマンドの[無通信監視時間]で設定します。詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。
注)プロセスモードの場合、時間超過のタイミングではコネクションを切断せず、次回リクエスト送信時にサーバとのコネクションの切断/再接続を行います。
APIによる通信資源の解放
通信資源解放用のAPIを発行することにより、クライアントアプリケーションは任意のタイミングで通信資源を解放できます。(注)
たとえば、サーバアプリケーションのオブジェクトリファレンスにSSL情報が付加されているなど、ネーミングサービスとの通信とサーバアプリケーションとの通信とでそれぞれ別コネクションを使用する場合は、サーバアプリケーションのオブジェクトリファレンス取得後にネーミングサービスとの通信用の資源を解放することにより、使用する通信資源量を減らすことが可能です。
通信資源解放用の各開発言語のAPIを以下に示します。詳細については、“リファレンスマニュアル(API編)”を参照してください。
開発言語 | API名 |
---|---|
C言語 | CORBA_ORB_net_disconnect |
C++言語 | CORBA::ORB::net_disconnect |
Java | com.fujitsu.ObjectDirector.CORBA.ORB.net_disconnect |
COBOL | CORBA-ORB-NET-DISCONNECT |
C言語/C++言語/Javaでは、上記APIを使用したサンプルプログラムを提供しています。サンプルプログラムの作成/実行方法については、“付録D サンプルプログラム”を参照してください。
注)マルチスレッドで動作するアプリケーションの場合、別スレッドでサーバと通信しているときに通信資源解放用のAPIを発行すると、サーバと通信しているスレッドにシステム例外が通知される可能性があります。そのため、別スレッドでサーバと通信していないことを確認してから通信資源解放用のAPIを発行してください。