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

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

 Previous Next Contents View as PDF  

Server::create_servant()

概要

サーバントを作成して C++ オブジェクトをインスタンス化します。

C++ バインディング

class Server {
public:
Tobj_Servant create_servant(const char* interfaceName);
};

引数

interfaceName

オブジェクトの完全修飾インターフェイス名を含む文字列を指定します。この名前は、TP::create_object_reference() を使用してオブジェクト・リファレンスを作成した場合に指定したインターフェイス名、または TP::create_active_object_reference() の呼び出しで使用したオブジェクト・リファレンスのインターフェイス名と同じになります。この名前を使用して、作成する必要があるサーバントを決定できます。

例外

Server::create_servant() で例外がスローされた場合、TP フレームワークが例外をキャッチします。活性化は失敗します。CORBA::OBJECT_NOT_EXIST() 例外がクライアントに返されます。また、エラー・メッセージが、次のように例外型ごとにユーザ・ログ (ULOG) ファイルに書き込まれます。

TobjS::CreateServantFailed

"TPFW_CAT:23: ERROR: Activating object - application raised TobjS::CreateServantFailed. Reason = reason. Interface = interfaceName, OID = oid"

reason はユーザ指定の理由を示し、interfaceNameoid はそれぞれ呼び出された CORBA オブジェクトの インターフェイスID とオブジェクト ID を示します。

TobjS::OutOfMemory

"TPFW_CAT:22: ERROR: Activating object - application raised TobjS::OutOfMemory. Reason = reason. Interface = interfaceName, OID = oid"

reason はユーザ指定の理由を示し、interfaceNameoid はそれぞれ呼び出された CORBA オブジェクトの インターフェイスID とオブジェクト ID を示します。

CORBA::Exception

"TPFW_CAT:28: ERROR: Activating object - CORBA Exception not handled by application. Exception ID = exceptionID. Interface = interfaceName, OID = oid"

exceptionID は例外のインターフェイス ID を示し、interfaceNameoid はそれぞれ呼び出された CORBA オブジェクトのインターフェイス ID とオブジェクト ID を示します。

その他の例外

"TPFW_CAT:29: ERROR: Activating object - Unknown Exception not handled by application. Exception ID = exceptionID. Interface = interfaceName, OID = oid"

exceptionID は例外のインターフェイス ID を示し、interfaceNameoid はそれぞれ呼び出された CORBA オブジェクトのインターフェイス ID とオブジェクト ID を示します。

説明

create_servant メソッドは、要求がサーバに送信され、その要求を満たすための利用可能なサーバントがない場合に、TP フレームワークによって呼び出されます。TP フレームワークは、作成するサーバントのインターフェイス名を指定して create_servant メソッドを呼び出します。サーバ・アプリケーションでは、適切な C++ オブジェクトをインスタンス化して、そのオブジェクトを指すポインタを返します。通常、このメソッドは、インターフェイス名の switch 文を格納しており、インターフェイス名に従って新しいオブジェクトを作成します。

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

戻り値

Tobj_Servant

指定されたインターフェイスに対して新しく作成されたサーバント (インスタンス) に対するポインタ。認識できないインターフェイスを指定して create_servant() を呼び出した場合、または何らかの理由でサーバントを作成できなかった場合は、NULL 値が返されます。

create_servant メソッドが NULL ポインタを返した場合、活性化は失敗します。CORBA::OBJECT_NOT_EXIST() 例外がクライアントに返されます。また、次のメッセージがユーザ・ログ (ULOG) に書き込まれます。

"TPFW_CAT:23: ERROR: Activating object - application raised TobjS::CreateServantFailed. Reason = Application's Server::create_servant returned NULL. Interface = interfaceName, OID = oid"

interfaceName は呼び出されたインターフェイスのインターフェイス ID を示し、oid は対応するオブジェクト ID を示します。

注記 このリリースでは、ObjectId の長さに関する制約がなくなりました。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy