ポイント
インスタンス解放インタフェースは、CORBAで規定されていない富士通拡張インタフェースです。
インスタンス解放インタフェースを取り扱う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 ); }; };
名前
PortableServer::POAdisconnect::setDisconnect
形式
static void setDisconnect( PortableServer::POAdisconnect_ptr disconnect );
機能説明
クライアントアプリケーションが終了したときに、インスタンス解放を行うクラスのインスタンスを登録します。インスタンス解放を行うクラスは、このクラスを継承して作成します。
パラメタ
登録するクラスのインスタンス。
復帰値
正常終了した場合は、ありません。
異常終了した場合は、以下の例外が発生します。
パラメタにnullが指定されています。
登録が2回以上行われました。
その他の要因。
システム例外発生時に設定された例外情報およびマイナーコードの意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。
名前
PortableServer::POAdisconnect::resetDisconnect
形式
(1) static void resetDisconnect(); (2) static void resetDisconnect( PortableServer::POAdisconnect_ptr disconnect );
機能説明
(1)すでに登録済のインスタンス解放処理クラスのインスタンスを削除します。このメソッド以前に、インスタンスが登録されていない場合、このメソッドは失敗します。
(2)すでに登録済のインスタンス解放処理クラスのインスタンスを、パラメタで指定されたインスタンスと置き換えます。
パラメタにnullを指定した場合や、このメソッド以前に、インスタンスが登録されていない場合、このメソッドは失敗します。
パラメタ
(1)なし
(2)
変更するクラスのインスタンス。
復帰値
正常終了した場合は、ありません。
異常終了した場合は、以下の例外が発生します。
このメソッドの発行前に、インスタンスが登録されていません。
(2)においてパラメタにnullが指定されています。
その他の要因。
システム例外発生時に設定された例外情報およびマイナーコードの意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。
名前
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(インスタンスを解放しない)を返します。
パラメタ
ServantのPOA。
Servantのインスタンス。
ServantのオブジェクトID。
復帰値
false(デフォルト値): インスタンスを解放しません。