bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA プログラミング・リファレンス > FactoryFinder インターフェイス |
Tuxedo CORBA プログラミング・リファレンス
|
概要
アプリケーション・ファクトリ名とオブジェクト・リファレンスをすべてリストします。
MIDL マッピング
HRESULT list_factories(
[in,out,optional] VARIANT* exceptionInfo,
[out,retval] VARIANT* returnValue);
オートメーション・マッピング
Function list_factories([exceptionInfo])
パラメータ
例外
説明
このメソッドは、CORBA サービス・ネーミング・サービスで登録されているアプリケーション・ファクトリのファクトリ・キー、および関連するオブジェクト・リファレンスをすべて含むリストを返すよう、FactoryFinder に指示します。
戻り値
DITobj_FactoryComponent オブジェクトの配列を含むバリアントを返します。FactoryComponent オブジェクトは、DICosNaming_NameComponent オブジェクトの配列と、アプリケーション・ファクトリへのインターフェイス・ポインタを含むバリアントで構成されます。
プログラミング例
この節では、FactoryFinder インターフェイスを使用してプログラミングを行う方法について説明します。
注記 コード内の例外を確認するよう留意してください。
FactoryFinder オブジェクトの使用
ファクトリ・オブジェクトへのリファレンスを見つけるには、プログラマは FactoryFinder オブジェクトを使用します。FactoryFinder オブジェクトは、指定した基準に基づき、ファクトリ・オブジェクトへの 1 つまたは複数のリファレンスを取得するオペレーションを提供します。
プロセス・アドレス領域には、複数の FactoryFinder オブジェクトが存在できます。FactoryFinder オブジェクトへの複数リファレンスをサポートする必要があります。FactoryFinder オブジェクトは、ドメイン内の FactoryFinder オブジェクトと、ドメインへのアクセスに使用する特定の IIOP サーバ・リスナ/ハンドラ (ISL/ISH) の間の関係についての状態を維持するという点では、半ば状態を持つオブジェクトです。
Object Management Group の CORBA サービス仕様 (1997 年 12 月) の第 6 章「Life Cycle Service」で定義されているように、FactoryFinder オブジェクトはすべて CosLifeCycle::FactoryFinder インターフェイスをサポートしています。このインターフェイスは、指定した基準に合致するファクトリ・オブジェクトへの 1 つまたは複数のリファレンスを取得するために使用されるオペレーションを 1 つ含みます。
ファクトリ・オブジェクトへのリファレンスの登録
次のコードの抜粋 (リスト5-8) では、TP フレームワーク・インターフェイスを使用して、FactoryFinder でファクトリ・オブジェクトへのリファレンスを登録する方法を示します。
コードリスト 5-8 サーバ・アプリケーション: ファクトリの登録
// サーバ・アプリケーション: ファクトリの登録
// C++ の例
TP::register_factory( factory_obj.in( ), "TellerFactory" );
CosLifeCycle::FactoryFinder インターフェイスを使用した FactoryFinder オブジェクトへのリファレンスの取得
次のコードの抜粋 (リスト5-9) は、CORBA 準拠のインターフェイスを使用してファクトリ・オブジェクトへの 1 つまたは複数のリファレンスを取得する方法を示します。
コードリスト 5-9 クライアント・アプリケーション: FactoryFinder オブジェクト・リファレンスの取得
// クライアント・アプリケーション: ファクトリ・オブジェクトへの
// オブジェクト・リファレンスの取得
CosLifeCycle::Key_var factory_key = new CosLifeCycle::Key( );
factory_key ->length(1);
factory_key[0].id = string_dupalloc( “strlen(“TellerFactory”) +1 );
factory_key[0].kind = string_dupalloc(
strlen(““FactoryInterface”) + 1);
strcpy( factory_key[0].id, “”TellerFactory” );
strcpy( facory_key[0].kind, “FactoryInterface” );
CosLifeCycle::Factories_var * flp = ff_np ->
find_factories( factory_key.in( ) );
拡張 Bootstrap オブジェクトを使用した FactoryFinder オブジェクトへのリファレンスの取得
次のコードの抜粋 (リスト5-10) は、BEA Tuxedo 拡張 Bootstrap オブジェクトを使用して FactoryFinder オブジェクトへのリファレンスを取得する方法を示したものです。
コードリスト 5-10 クライアント・アプリケーション: Tobj の手法を使用して、1 つのファクトリを見つける
// クライアント・アプリケーション: Tobj の手法を使用して、
// 1 つのファクトリを見つける
Tobj_Bootstrap * bsp = new Tobj_Bootstrap(
orb_ptr.in( ), host_port );
CORBA::Object_varptr ff_op = bsp ->
resolve_initial_references( “FactoryFinder” );
Tobj::FactoryFinder_ptrvar ff_np =
Tobj::FactoryFinder::_narrow( ff_op );
注記 Tobj_Bootstrap オブジェクトを使用する場合は、CosLifeCycle::FactoryFinder インターフェイスに BEA Tuxedo CORBA の拡張を使用できますが、このオブジェクトはファクトリを見つけるために必須のものではありません。CORBA INS を使用していれば、CosLifeCycle::FactoryFinder インターフェイスにより提供される find_factories() メソッドを使用できます。
FactoryFinder オブジェクトに対する拡張の使用
BEA Tuxedo では、CORBA で定義されるオペレーションと類似の機能をサポートするように、FactoryFinder オブジェクトを拡張します。ただしこちらでは、大幅に簡素化されており、より限定的であるシグニチャが使われます。拡張機能は、Tobj::FactoryFinder インターフェイスを定義することによって提供されます。Tobj::FactoryFinder インターフェイス用に定義されたオペレーションは、CORBA で定義される同等の機能を、焦点を絞って簡素化した形態で提供することを意図しています。アプリケーション開発者は、開発時に、CORBA 定義の拡張を使用するか、BEA Tuxedo の拡張を使用するかを選択できます。インターフェイス Tobj::FactoryFinder は、CosLifeCycle::FactoryFinder インターフェイスから派生しています。
FactoryFinder オブジェクトへの BEA Tuxedo の拡張は、Object Management Group の CORBA サービス仕様 (1997 年 12 月) の第 6 章「Life Cycle Service」で定義されている FactoryFinder オブジェクトとすべて同じ規則に準拠しています。
拡張された FactoryFinder オブジェクトのインプリメンテーションでは、ユーザが CORBA 定義の CosLifeCycle::FactoryFinder インターフェイスでのように CosLifeCycle::Key を指定するか、または探しているファクトリ・オブジェクトの識別子を含んだ NULL で終了する文字列を指定する必要があります。
Tobj::FactoryFinder を使用しての、1 つのファクトリの取得
次のコードの抜粋 (リスト5-11) では、BEA Tuxedo 拡張インターフェイスを使用して、識別子に基づき、ファクトリ・オブジェクトへのリファレンスを 1 つ取得する方法を示します。
コードリスト 5-11 クライアント・アプリケーション: BEA Tuxedo 拡張の手法をを使用して、1 つのファクトリを見つける
CosLifeCycle::Factory_ptrvar fp_obj = ff_np ->
find_one_factory_by_id( “TellerFactory” );
Tobj::FactoryFinder を使用しての、1 つまたは複数のファクトリの取得
次のコードの抜粋 (リスト5-12) では、BEA Tuxedo 拡張を使用して、識別子に基づき、ファクトリ・オブジェクトへの1 つまたは複数のリファレンスを取得する方法を示します。
コードリスト 5-12 クライアント・アプリケーション: BEA Tuxedo 拡張の手法を使用して、1 つまたは複数のファクトリを見つける
CosLifeCycle::Factories * _var flp = ff_np ->
find_factories_by_id( “TellerFactory” );
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |