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

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

 Previous Next Contents View as PDF  

TP::deactivateEnable()

概要

CORBA オブジェクトのアプリケーション制御の非活性化を有効にします。

C++ バインディング

current-object 形式

static void           TP::deactivateEnable();

any-object 形式

static void        TP::deactivateEnable(
const char* interfaceName,
const char* stroid,
Tobj_Servant servant);

引数

interfaceName

オブジェクトの完全修飾インターフェイス名を含む文字列を指定します。

stroid

非活性化するオブジェクトの ObjectId を文字列形式で指定します。

サーバント

stroid に関連付けられたサーバントに対するポインタ。

例外

deactivateEnable() メソッドの例外は以下のとおりです。

IllegalOperation

TP::deactivateEnable メソッドが、活性化方針を transaction に設定されたオブジェクトによって呼び出されたことを示します。

TobjS::ObjectNotActive

any-object 形式では、指定されたオブジェクトは非活性化されていなかった、つまり、stroid および servant パラメータはアクティブ・オブジェクト・マップ内でオブジェクトを識別できなかったので、活性化できませんでした。

説明

このオブジェクトを使用すると、同時実行されているオブジェクト (オブジェクトを呼び出したメソッドの終了時)、または別のオブジェクトを非活性化できます。このメソッドは、プロセス・バウンド活性化方針が設定されたオブジェクトに対してのみ使用できます。このメソッドにより、process 活性化方針が設定されたオブジェクトをさらに柔軟に扱うことができます。

注記 シングル・スレッド・サーバの場合、TP::deactivateEnable(interface, object id, servant) メソッドを使用すると、オブジェクトを非活性化できます。ただし、オブジェクトがトランザクションに参加している場合、オブジェクトが非活性化されるのは、トランザクションがコミットまたはロールバックしたときです。トランザクションがコミットまたはロールバックする前にオブジェクトに対して呼び出しが行われた場合、オブジェクトは非活性化されません。

必要な動作が確実に実行されるようにするには、オブジェクトがトランザクションに参加していないことを確認するか、TP::deactivateEnable() を呼び出してからトランザクションが終了するまでオブジェクトに対して呼び出しが行われないようにします。

注記 マルチスレッド・サーバの場合、TP::deactivateEnable(interface, object id, servant) メソッドを使用して、オブジェクトごとのサーバのオブジェクトを非活性化することはできません。このメソッドでは、要求ごとのサーバのオブジェクトを非活性化することができますが、ほかのスレッドがオブジェクトを操作しているので、非活性化は延期されます。

呼び出されるオーバロード関数の種類によって、操作は次のようになります。

current-object 形式

プロセス・バウンド活性化方針が設定されたオブジェクトのメソッド内から呼び出された場合、実行中のオブジェクトは、メソッドの実行が終了した後に非活性化されます。

method 活性化方針が設定されたオブジェクトのメソッド内から呼び出された場合、こうしたオブジェクトの通常の動作 (事実上 NOOP) と同じ効果があります。

オブジェクトが非活性化されると、TP フレームワークではまずアクティブ・オブジェクト・マップからオブジェクトが削除されます。次に、理由コード DR_METHOD_END を使用して、オブジェクトに関連付けられたサーバントの deactivate_object メソッドが呼び出されます。

any-object 形式

アプリケーションでは、ObjectId と関連付けられたサーバントを指定することで、オブジェクトの非活性化を要求します。

オブジェクトが実行中の場合、TP では非活性化対象としてオブジェクトをマークして、current-object 形式と同じように、オブジェクトのメソッドが終了するまで待機してから非活性化します。オブジェクトが実行中でない場合、TP フレームワークでは直ちにオブジェクトを非活性化できます。非活性化のステータスは、呼び出し元に通知されません。オブジェクトが非活性化されると、TP フレームワークではまずアクティブ・オブジェクト・マップからオブジェクトが削除されます。次に、理由コード DR_EXPLICIT_DEACTIVATE を使用して、オブジェクトに関連付けられたサーバントの deactivate_object メソッドが呼び出されます。

非活性化を要求されたオブジェクトに transaction 活性化方針が設定されていた場合、IllegalOperation 例外が発生します。これは、こうしたオブジェクトを非活性化すると、BEA Tuxedo トランザクション・マネージャからのトランザクション終了の通知と競合する場合があるからです。

戻り値

特にありません。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy