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

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

 Previous Next Contents View as PDF  

ServerBase::thread_release()

概要

BEA Tuxedo ソフトウェアで作成されたスレッドが解放されたときに、アプリケーション固有のクリーンアップを実行します。このメソッドは、マルチスレッド・サーバ・アプリケーションの開発をサポートします。

C++ バインディング

void thread_release()

引数

特にありません。

説明

thread_release コールバック・メソッドは、スレッドが解放されるたびに呼び出されます。アプリケーション固有のリソース・クリーンアップを実行する場合は、thread_release を実装します。

ServerBase クラスには、解放されたスレッドの XA リソース・マネージャをクローズする thread_release メソッドのデフォルト・インプリメンテーションが用意されています。

戻り値

特にありません。

void simple_per_request_server::thread_release()
{
TP::userlog("thread_release called in thread %ld",
(unsigned long)SIMPTHR_GETCURRENTTHREADID);
}

Tobj_ServantBase インターフェイス

Tobj_ServantBase インターフェイスは、PortableServer::RefCountServantBase クラスを継承し、スレッド・セーフな方法で状態を管理する際に CORBA オブジェクトが役立つようにするオペレーションを定義します。IDL コンパイラによって生成されるインプリメンテーションの各スケルトンは、Tobj_ServantBase クラスを自動的に継承します。Tobj_ServantBase クラスには、プログラマが任意で実装可能な 2 つの仮想メソッド (activate_object() および deactivate_object()) が含まれています。

活性化されたいない CORBA オブジェクトに対する要求が受信されるたびに、オブジェクトが活性化され、activate_object() メソッドがサーバントに対して呼び出されます。CORBA オブジェクトが非活性化されると、deactivate_object() メソッドがサーバントに対して呼び出されます。非活性化のタイミングは、インプリメンテーションの活性化方針によって決まります。deactivate_object() メソッドが呼び出されると、TP フレームワークは呼び出しの理由を示す理由コードを渡します。

これらのメソッドは、マルチスレッド・サーバ・アプリケーションの開発をサポートします。

注記 CORBA オブジェクトの活性化および非活性化時に呼び出すことを TP フレームワークで保証されているメソッドは、Tobj_ServantBase::activate_object()Tobj_ServantBase::deactivate_object() だけです。活性化および非活性化時に C++ の Server::create_servant 呼び出しによってサーバント・クラスのコンストラクタおよびデストラクタを呼び出すことはできません。したがって、サーバ・アプリケーションでは、サーバント・クラスのコンストラクタまたはデストラクタで CORBA オブジェクトの状態を処理してはなりません。

注記 プログラマは、直接 Tobj_ServantBase をキャストしたり、参照したりする必要がありません。Tobj_ServantBase メソッドはスケルトンに含まれているので、サーバントのインプリメンテーションにも含まれることになります。プログラマは activate_object および deactivate_object メソッドを定義できますが、これらのメソッドを直接呼び出してはなりません。TP フレームワークだけがこれらのメソッドを呼び出します。

C++ 宣言 (Tobj_ServantBase.h 内)

次に、Tobj_servantBase インターフェイスの C++ マッピングを示します。

class Tobj_ServantBase : public PortableServer::RefCountServantBase {
public:
    Tobj_ServantBase& operator=(const Tobj_ServantBase&);
Tobj_ServantBase() {}
Tobj_ServantBase(const Tobj_ServantBase& s) :
PortableServer::RefCountServantBase(s) {}
    virtual void activate_object(const char *) {}
    virtual void deactivate_object(const char*, 
TobjS::DeactivateReasonValue) {}
    virtual CORBA::Boolean _is_reentrant() { return CORBA_FALSE; }
};
typedef Tobj_ServantBase * Tobj_Servant;

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy