bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo CORBA プログラミング・リファレンス

 Previous Next Contents View as PDF  

ServerBase::create_servant_with_id()

概要

対象オブジェクト用のサーバントを作成します。このメソッドは、シングル・スレッドおよびマルチスレッド・サーバ・アプリケーションの開発をサポートします。

C++ バインディング

Tobj_Servant create_servant_with_id (const char* interfaceName,
const char* stroid);

引数

interfaceName

オブジェクトの完全修飾インターフェイス名を含む文字列を指定します。このインターフェイス名は、オブジェクト・リファレンスを作成したときに指定した名前と同じでなければなりません。

stroid

オブジェクト ID を文字列形式で指定します。オブジェクト ID は、処理対象の要求に関連付けられるオブジェクトを一意に識別します。このオブジェクト ID は、オブジェクト・リファレンスを作成したときに指定した ID と同じでなければなりません。

説明

TP フレームワークは、要求がサーバに送信されたときに、その要求を満たすための利用可能なサーバントがない場合に create_servant_with_id メソッドを呼び出します。TP フレームワークは、作成するサーバントのインターフェイスとサーバントに関連付けられるオブジェクトのオブジェクト ID を渡します。サーバ・アプリケーションでは、適切な C++ オブジェクトをインスタンス化して、そのオブジェクトを指すポインタを返します。通常、このメソッドは、インターフェイス名の switch 文を格納しており、インターフェイス名に従って新しいオブジェクトを作成します。オブジェクト ID を指定すると、サーバントのインプリメンテーションでは、サーバント・インスタンスの作成時に対象オブジェクトの情報を基にさまざまな決定を行えます。リエントラントのサポートは、サーバントのインプリメンテーションで対象オブジェクトの情報を利用する方法の一例です。

ServerBase クラスには、インターフェイス名を渡す標準の create_servant メソッドを呼び出す create_servant_with_id のデフォルト・インプリメンテーションが用意されています。このデフォルト・インプリメンテーションでは、対象のオブジェクト ID パラメータは無視されます。

Caution: サーバ・アプリケーションでは、CORBA オブジェクトが活性化されるたびにこのメソッドが呼び出されることを前提にしてはなりません。また、サーバ・アプリケーションでは、CORBA オブジェクトのサーバント・クラスのコンストラクタまたはデストラクタで、CORBA オブジェクトの状態を処理してはなりません。TP フレームワークが活性化時にサーバントを再利用する場合や、非活性化時にサーバントを破棄しない場合が考えられるからです。

戻り値

Tobj_Servant

指定されたインターフェイスに対して新しく作成されたサーバント (インスタンス) に対するポインタ。以下のいずれかの条件が満たされる場合は、NULL を返します。

Tobj_Servant simple_per_request_server::create_servant_with_id(
const char* intf_repos_id, const char* stroid)
{
TP::userlog("create_servant_with_id called in thread %ld",
(unsigned long)SIMPTHR_GETCURRENTTHREADID);

// このオブジェクト ID に基づいて必要な初期化を
// 実行する

return create_servant(intf_repos_id);
}

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy