ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

11.9 通信資源の解放

  クライアントアプリケーションは、サーバメソッドを呼び出す際にサーバとのコネクションを接続します。サーバメソッドを呼び出すごとにコネクション接続処理が動作しなくても済むように、接続されたコネクションは維持されます。しかし、クライアントとサーバのコネクションが維持された状態は通信資源を使用しており、サーバ側のクライアントから受け付け可能なコネクション数超過の要因ともなり得ます。
  ここでは、コネクションを切断し、通信資源を解放する機能について説明します。


サーバ側無通信監視機能

  サーバ側無通信監視機能により、サーバにおける無通信状態(クライアントからのリクエスト送信なし)の監視を行うことができます。監視時間を超過してもクライアントからのリクエスト送信がない場合、クライアントとのコネクションを切断し通信資源を解放します。なお、インプリメンテーションリポジトリへの登録時に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を発行するようにしてください。