bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA プログラミング・リファレンス > CORBA ブートストラップ処理のプログラミング・リファレンス |
Tuxedo CORBA プログラミング・リファレンス
|
CORBA ブートストラップ処理のプログラミング・リファレンス
ここでは、以下の内容について説明します。
ブートストラップ処理が必要な理由
クライアント・アプリケーションが BEA Tuxedo オブジェクトと通信するためには、オブジェクト・リファレンスを取得する必要があります。オブジェクト・リファレンスがないと、通信はできません。この問題を解決するために、クライアント・アプリケーションではブートストラップ処理メカニズムを使用して BEA Tuxedo ドメインのオブジェクトのオブジェクト・リファレンスを取得します。
サポートされているブートストラップ処理メカニズム
リリース 8.0 以降の Tuxedo では、2 つのブートストラップ処理メカニズムがサポートされます。
BEA クライアント ORB を使用する場合に使用します。
別のベンダのクライアント ORB を使用する場合に使用します。
注記 BEA Tuxedo ソフトウェアに付属の CORBA C++ クライアントおよび Java クライアントでは、インターオペラブル・ネーミング・サービスのブートストラップ処理メカニズムを使用できますが、性能上の理由により推奨はできません。
BEA ブートストラップ処理メカニズム
BEA ブートストラップ処理メカニズムでは、Bootstrap オブジェクトを使用します。Bootstrap オブジェクトは、クライアントとサーバ両方の (リモート CORBA オブジェクトではなく) ローカル・プログラミング・オブジェクトです。Bootstrap オブジェクトが作成されるとき、そのコンストラクタは BEA Tuxedo IIOP リスナ/ハンドラのネットワーク・アドレスを必要とします。その情報が提供されると、ブートストラップ処理オブジェクトでは BEA Tuxedo ドメインの主要なリモート・オブジェクトのオブジェクト・リファレンスを生成できます。それらのオブジェクト・リファレンスは、BEA Tuxedo ドメインで利用可能なサービスにアクセスするために使用できます。
Bootstrap オブジェクトの機能
Bootstrap オブジェクトは、次の BEA Tuxedo CORBA インターフェイスのオブジェクト・リファレンスにアクセスする必要のあるクライアントまたはサーバ・アプリケーションによって作成されます。
Bootstrap オブジェクトは、IIOP リスナ/ハンドラのアドレスの形式によっては特定の BEA Tuxedo ドメインへの最初の接続を表す場合があります。ヌル・スキーマ Universal Resource Locator (URL) 形式が使用される場合に (バージョン 5.1 以前の BEA WebLogic Enterprise リリースと BEA Tuxedo リリース 8.0 でサポートされている唯一のアドレス形式)、Bootstrap オブジェクトは最初の接続を表します。ただし、この URL 形式が使用される場合は、Bootstrap オブジェクトが作成されるまで接続は行われません。アドレス形式と接続回数の詳細については、「Tobj_Bootstrap」を参照してください。
BEA Tuxedo CORBA リモート・クライアントについては、Bootstrap オブジェクトは BEA Tuxedo IIOP リスナ/ハンドラのホストとポートを使用して作成されます。しかし、BEA Tuxedo ネイティブのクライアント・アプリケーションとサーバ・アプリケーションでは、ホストとポートを指定する必要はありません (特定の BEA Tuxedo ドメインで実行されるため)。IIOP リスナ/ハンドラのホストとポート ID は、BEA Tuxedo ドメインのコンフィギュレーション情報に含まれています。
Bootstrap オブジェクトは、その作成後に、特定の BEA Tuxedo ドメインにあるオブジェクトのオブジェクト・リファレンスに対する要求を満たします。異なる Bootstrap オブジェクトを使用すると、アプリケーションで複数のドメインを使用できます。
Bootstrap オブジェクトを使用すると、次のオブジェクトのオブジェクト・リファレンスを取得できます。
SecurityCurrent オブジェクトは、BEA Tuxedo ドメイン内のセキュリティ・コンテキストを確立するために使用します。クライアントは、SecurityCurrent オブジェクトの principal_authenticator 属性から PrincipalAuthenticator を取得できます。
TransactionCurrent オブジェクトは、BEA Tuxedo トランザクションに参加するために使用します。基本的なオペレーションは以下の通りです。
トランザクションを開始します。以降のオペレーションは、このトランザクションのスコープ内で発生します。
トランザクションを終了します。このクライアント・アプリケーションですべてのオペレーションが正常に終了しています。
トランザクションをアボートします。ほかのすべてのパーティシパントにロールバックを指示します。
現在のトランザクションの参加を一時停止します。このオペレーションは、トランザクションを示すオブジェクトを返し、クライアント・アプリケーションが後でトランザクションを再開できるようにします。
指定したトランザクションの参加を再開します。
FactoryFinder オブジェクトは、ファクトリを取得するために使用します。BEA Tuxedo システムで、ファクトリはアプリケーション・オブジェクトを作成するために使用します。FactoryFinder では、次のような方法でファクトリを検索できます。
インターフェイス・リポジトリには、BEA Tuxedo ドメイン内でインプリメントされる CORBA オブジェクトのインターフェイス記述が含まれています。動的起動インターフェイス (DII) を使用するクライアントでは、インターフェイス・リポジトリのリファレンスがないと CORBA 要求の構造体を構築できません。ActiveX クライアントはこの特殊なケースです。COM/IIOP ブリッジのインプリメンテーションでは内部で DII が使用されるので、インターフェイス・リポジトリのリファレンスを取得しなければなりません (ただしこれはデスクトップ・クライアントに対して透過的)。
NamingService オブジェクトは、ルート名前空間のリファレンスを取得するために使用します。このオブジェクトを使用すると、ORB は名前空間のルートを検索します。
NotificationService オブジェクトは、CosNotification サービス内のイベント・チャネル・ファクトリ (CosNotifyChannelAdmin::EventChannelFactory) のリファレンスを取得するために使用します。BEA Tuxedo システムで、EventChannelFactory はノーティフィケーション・サービス・チャネルの検索に使用します。
Tobj_SimpleEventsService オブジェクトは、BEA シンプル・イベント・サービス内のイベント・チャネル・ファクトリ (Tobj_SimpleEvents::ChannelFactory) のリファレンスを取得するために使用します。BEA Tuxedo システムで、ChannelFactory は BEA シンプル・イベント・サービス・チャネルの検索に使用します。
FactoryFinder オブジェクトとインターフェイス・リポジトリ・オブジェクトは、環境オブジェクト・ライブラリでインプリメントされません。しかし、それらのオブジェクトは BEA Tuxedo ドメインに固有であり、したがって概念的には SecurityCurrent オブジェクトおよび TransactionCurrent オブジェクトと似ています。
Bootstrap オブジェクトは、クライアント・アプリケーションと BEA Tuxedo ドメインの間の関連 (セッション) を意味します。この関連のコンテキストで、Bootstrap オブジェクトはほかの Current オブジェクト (SecurityCurrent と TransactionCurrent) との包含関係を強制します。Current オブジェクトは、このドメインの範囲内で、Bootstrap オブジェクトが存在している間のみ有効です。
注記 新しい URL アドレス形式 (corbaloc://hostname:port_number) を使用している場合の SecurityCurrent の解決はローカルの処理です。つまり、クライアントから IIOP リスナ/ハンドラへの接続は行われません。
また、クライアントでは各 Current オブジェクトにつきインスタンスは 1 つしか利用できません。Current オブジェクトが既に存在する場合でも、新たな Current オブジェクトの作成が失敗することはありません。失敗するのではなく、既存のオブジェクトのもう 1 つのリファレンスが渡されます。つまり、クライアント・アプリケーションは Current オブジェクトの単一インスタンスの複数のリファレンスを持つことになります。
Current オブジェクトの新しいインスタンスを作成するには、まず Bootstrap オブジェクトの destroy_current() メソッドを呼び出す必要があります。この呼び出しですべての Current オブジェクトが無効になりますが、BEA Tuxedo ドメインとのセッションは破棄されません。destroy_current() を呼び出した後は、既存の Bootstrap オブジェクトを使用して BEA Tuxedo ドメイン内で Current オブジェクトの新しいインスタンスを作成できます。
別のドメインの Current オブジェクトを取得するには、別の Bootstrap オブジェクトを作成する必要があります。同時に複数の Bootstrap オブジェクトを持つこともできますが、「アクティブ」にできる (Current オブジェクトを関連付けることができる) のは 1 つの Bootstrap オブジェクトだけです。したがって、アプリケーションでは「アクティブ」な Bootstrap オブジェクトの destroy_current() を呼び出してから別の Bootstrap オブジェクト (アクティブな Bootstrap オブジェクトになる) の新しい Current オブジェクトを取得する必要があります。
注記 複数のドメインのオブジェクトにアクセスする必要がある場合は、オブジェクトをローカル・ドメインにインポートするか、複数のドメインにアクセスするようにアプリケーションをコンフィギュレーションします。マルチ・ドメイン・コンフィギュレーションの詳細については、『BEA Tuxedo Domains コンポーネント』
の「Configuring Multiple CORBA Domains」を参照してください。サーバとネイティブ・クライアントは BEA Tuxedo ドメインの中に存在します。したがって、「セッション」は確立されません。ただし、同じ包含関係が強制されます。サーバとネイティブ・クライアントは、//host:port ではなく空の文字列を指定してそれらが含まれているドメインにアクセスします。
注記 Bootstrap オブジェクトを使用する場合、クライアント・アプリケーションとサーバ・アプリケーションでは ORB::resolve_initial_references() メソッドではなく Tobj_Bootstrap::resolve_initial_references() メソッドを使用する必要があります。
サポートされている BEA リモート・クライアントの種類
表 4-1 は、Bootstrap オブジェクトを使用してほかの環境オブジェクト (FactoryFinder、SecurityCurrent、TransactionCurrent、InterfaceRepository など) にアクセスできるリモート・クライアントの種類を示しています。これらのクライアントは、BEA Tuxedo CORBA ソフトウェアに付属しています。サード・パーティ製のクライアント ORB では、CORBA インターオペラブル・ネーミング・サービスを使用する必要があります。
機能と制限事項 Bootstrap オブジェクトには、以下の機能と制限があります。
Bootstrap オブジェクト API
Bootstrap オブジェクト・アプリケーション・プログラミング・インターフェイス (API) は、まず OMG 定義言語 (IDL) で記述し (移植性のため)、その後に C++、Java、および ActiveX で記述します。C++ および Java の記述では、特定の BEA Tuxedo ドメインの Bootstrap オブジェクトをビルドするために必要なコンストラクタが追加されます。
Tobj モジュール
表 4-2 は、各 ID で返されるオブジェクト・リファレンスを示しています。
表 4-3 は、Tobj モジュールの例外を示しています。
C++ のマッピング リスト 4-1 は、Tobj_bootstrap.h ファイルでの C++ の宣言を示しています。 コード リスト 4-1 Tobj_boostrap.h の宣言 class Tobj_Bootstrap { Java マッピング リスト 4-2 は、Tobj_Bootstrap.java のマッピングを示しています。 コード リスト 4-2 Tobj_Bootstrap.java のマッピング public void register_callback_port(orb.omg.CORBA.Object objref) Microsoft デスクトップ・クライアントのマッピング Bootstrap オブジェクトは、Microsoft デスクトップでインプリメントされるクライアントが使用できるように BEA ActiveX クライアント・ソフトウェアで提供されます。デスクトップ・クライアントでは、次の 2 つのインターフェイスを使用できます。
#include <CORBA.h>
public:
Tobj_Bootstrap(CORBA::ORB_ptr orb, const char* address);
CORBA::Object_ptr resolve_initial_references(
const char* id);
void register_callback_port(CORBA::Object_ptr objref);
void destroy_current( );
};package com.beasys;
public class Tobj_Bootstrap {
public Tobj_Bootstrap(org.omg.CORBA.ORB orb,
String address)
throws org.omg.CORBA.SystemException;
public class Tobj_Bootstrap {
public Tobj_Bootstrap(org.omg.CORBA.ORB orb, String address,
java.applet.Applet applet)
throws org.omg.CORBA.SystemException;
throws org.omg.CORBA.SystemException;public org.omg.CORBA.Object
resolve_initial_references(String id)
throws Tobj.InvalidName,
org.omg.CORBA.SystemException;
public void destroy_current()
throws org.omg.CORBA.SystemException;
}
オートメーションのマッピング
リスト 4-3 は、オートメーション Bootstrap インターフェイスのマッピングを示しています。
コード リスト 4-3 オートメーション (デュアル) Bootstrap インターフェイスのマッピング
interface DITobj_Bootstrap : IDispatch
{
HRESULT Initialize(
[in] BSTR address);
HRESULT CreateObject(
[in] BSTR progid,
[out, retval] IDispatch** rtrn);
HRESULT destroy_current();
};
C++ メンバ関数
この節では、BEA ブートストラップ処理メカニズムでサポートされる C++ メンバ関数について説明します。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |