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

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

 Previous Next Contents View as PDF  

DI.list_factories

概要

アプリケーション・ファクトリ名とオブジェクト・リファレンスをすべてリストします。

MIDL マッピング

HRESULT list_factories(
[in,out,optional] VARIANT* exceptionInfo,
[out,retval] VARIANT* returnValue);

オートメーション・マッピング

Function list_factories([exceptionInfo])

パラメータ

exceptionInfo

エラーが発生した場合にアプリケーションが追加の例外データを取得できるようにするオプションの入力引数。

例外

CannotProceed

この例外が発生するのは、FactoryFinder または CORBA サービス・ネーミング・サービスが検索中に内部エラーに遭遇した場合です。エラーは、ユーザ・ログ (ULOG) に書き込まれます。この例外が発生した場合は、すぐに作業担当者に通知されます。内部エラーの重要度によっては、FactoryFinder または CORBA サービス・ネーミング・サービスが実行されていたサーバが、終了していることがあります。FactoryFinder サービスが終了した場合は、新しい FactoryFinder サービスを開始します。CORBA サービス・ネーミング・サービスの 1 つが終了しており、別の CORBA サービス・ネーミング・サービス は実行中である場合は、新規の CORBA サービス・ネーミング・サービス を開始します。稼動中のネーミング・サービス・サーバがない場合は、アプリケーションを再起動します。

RegistrarNotAvailable

この例外は、FactoryFinder が CORBA サービス・ネーミング・サービスのオブジェクトを見つけられない場合に発生します。この例外が発生した場合は、すぐに作業担当者に通知されます。稼動中のネーミング・サービス・サーバがない場合もあります。その場合は、アプリケーションを再起動します。

説明

このメソッドは、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” );

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy