ページの先頭行へ戻る
Interstage Application Server リファレンスマニュアル(API編)

2.12.13 インスタンス解放インタフェース

  インスタンス解放インタフェースを取り扱うPOAdisconnectクラスについて説明します。
この機能は、C++言語のPOAでCORBAサービスのインスタンス管理機能を利用し、かつそのPOAがActiveObjectMapを使用してインスタンス管理を行っている場合にのみ利用できます。

// C++
class PortableServer
{
public :
     class POA;
     typedef POA*  POA_ptr;

class POAdisconnect;
     typedef POAdisconnect*  POAdisconnect_ptr;
     class POAdisconnect
     {
         static void setDisconnect( POAdisconnect_ptr disconnect )
             throw( CORBA::Exception );
         static void resetDisconnect( POAdisconnect_ptr disconnect )
             throw( CORBA::Exception );
         static void resetDisconnect()
             throw( CORBA::Exception );
         CORBA::Boolean release_instance(
             POA_ptr      poa,
             Servant      servant,
             ObjectId&    oid );
     };
};

2.12.13.1 PortableServer::POAdisconnect::setDisconnect()

名前

  PortableServer::POAdisconnect::setDisconnect

形式

  static void setDisconnect(
      PortableServer::POAdisconnect_ptr  disconnect );

機能説明

  クライアントアプリケーションが終了したときに、インスタンス解放を行うクラスのインスタンスを登録します。インスタンス解放を行うクラスは、このクラスを継承して作成します。

パラメタ

  disconnect

  登録するクラスのインスタンス。

復帰値

  正常終了した場合は、ありません。
  異常終了した場合は、以下の例外が発生します。

  CORBA::StExcep::BAD_PARAM

  パラメタにnullが指定されています。
  登録が2回以上行われました。

  CORBA::SystemException

  その他の要因。

  システム例外発生時に設定された例外情報およびマイナーコードの意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。

2.12.13.2 PortableServer::POAdisconnect::resetDisconnect()

名前

  PortableServer::POAdisconnect::resetDisconnect

形式

  (1) static void resetDisconnect();
  (2) static void resetDisconnect(
          PortableServer::POAdisconnect_ptr  disconnect );

機能説明

(1)すでに登録済のインスタンス解放処理クラスのインスタンスを削除します。このメソッド以前に、インスタンスが登録されていない場合、このメソッドは失敗します。

(2)すでに登録済のインスタンス解放処理クラスのインスタンスを、パラメタで指定されたインスタンスと置き換えます。

  パラメタにnullを指定した場合や、このメソッド以前に、インスタンスが登録されていない場合、このメソッドは失敗します。

パラメタ

  (1)なし
  (2)

  disconnect

  変更するクラスのインスタンス。

復帰値

  正常終了した場合は、ありません。
  異常終了した場合は、以下の例外が発生します。

  CORBA::StExcep::BAD_PARAM

  このメソッドの発行前に、インスタンスが登録されていません。
  (2)においてパラメタにnullが指定されています。

  CORBA::SystemException

  その他の要因。

  システム例外発生時に設定された例外情報およびマイナーコードの意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。

2.12.13.3 PortableServer::POAdisconnect::release_instance()

名前

  PortableServer::POAdisconnect::release_instance

形式

  CORBA::Boolean release_instance(
      PortableServer::POA_ptr     poa,
      PortableServer::Servant     servant,
      PortableServer::ObjectId&   oid );

機能説明

  クライアントとのコネクションが切断された場合に呼び出されます。インスタンス解放処理を行う場合は、当クラスを継承したユーザ定義クラスを用意し、当メソッドをオーバライドします。当メソッドによって通知された、Servantのインスタンス、およびオブジェクトIDを元にインスタンスが必要か否かを判断し、true(解放する)またはfalse(解放しない)を返します。
  スーパクラスのrelease_instance()メソッドは常にfalse(インスタンスを解放しない)を返します。

パラメタ

  (1) poa

  ServantのPOA。

  (2) servant

  Servantのインスタンス。

  (3) oid

  ServantのオブジェクトID。

復帰値

  false(デフォルト値): インスタンスを解放しません。