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

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

ポイント

インスタンス解放インタフェースは、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 );
     };
};

2.12.12.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.12.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.12.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(デフォルト値): インスタンスを解放しません。