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

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

 Previous Next Contents View as PDF  

CORBA ブートストラップ処理のプログラミング・リファレンス

ここでは、以下の内容について説明します。

 


ブートストラップ処理が必要な理由

クライアント・アプリケーションが BEA Tuxedo オブジェクトと通信するためには、オブジェクト・リファレンスを取得する必要があります。オブジェクト・リファレンスがないと、通信はできません。この問題を解決するために、クライアント・アプリケーションではブートストラップ処理メカニズムを使用して BEA Tuxedo ドメインのオブジェクトのオブジェクト・リファレンスを取得します。

 


サポートされているブートストラップ処理メカニズム

リリース 8.0 以降の Tuxedo では、2 つのブートストラップ処理メカニズムがサポートされます。

注記 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 オブジェクトを使用すると、次のオブジェクトのオブジェクト・リファレンスを取得できます。

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 インターオペラブル・ネーミング・サービスを使用する必要があります。

表 4-1 サポートされている BEA リモート・クライアント

クライアント

説明

CORBA C++

CORBA C++ クライアント・アプリケーションでは、BEA Tuxedo C++ 環境オブジェクトを使用して BEA Tuxedo ドメインの CORBA オブジェクトにアクセスし、BEA Tuxedo オブジェクト・リクエスト・ブローカ (ORB) を使用して CORBA オブジェクトからの要求を処理します。BEA Tuxedo システムの開発コマンドを使用すると、このタイプのクライアント・アプリケーションをビルドできます (『BEA Tuxedo コマンド・リファレンス』を参照)。

CORBA Java

CORBA Java クライアント・アプリケーションでは、BEA Tuxedo Java 環境オブジェクトを使用して BEA Tuxedo ドメインの CORBA オブジェクトにアクセスします。ただし、CORBA オブジェクトからの要求の処理には BEA Tuxedo ORB 以外の ORB 製品が使用されます。このタイプのクライアント・アプリケーションは、ORB 製品の Java 開発ツールを使用してビルドします。

ActiveX

BEA Tuxedo オートメーション環境オブジェクトを使用して BEA Tuxedo ドメインの CORBA オブジェクトにアクセスし、ActiveX クライアントを使用して CORBA オブジェクトからの要求を処理します。Application Builder を使用すると、ActiveX クライアント・アプリケーションからアクセスできるように CORBA オブジェクトのバインディングを作成できます。ActiveX クライアント・アプリケーションは、Microsoft Visual Basic、Delphi、PowerBuilder などの開発ツールでビルドします。


 

機能と制限事項

Bootstrap オブジェクトには、以下の機能と制限があります。

 


Bootstrap オブジェクト API

Bootstrap オブジェクト・アプリケーション・プログラミング・インターフェイス (API) は、まず OMG 定義言語 (IDL) で記述し (移植性のため)、その後に C++、Java、および ActiveX で記述します。C++ および Java の記述では、特定の BEA Tuxedo ドメインの Bootstrap オブジェクトをビルドするために必要なコンストラクタが追加されます。

Tobj モジュール

表 4-2 は、各 ID で返されるオブジェクト・リファレンスを示しています。

表 4-2 返されるオブジェクト・リファレンス

ID

返されるオブジェクト・リファレンス (C++ クライアント)

返されるオブジェクト・リファレンス (Java クライアント)

FactoryFinder

FactoryFinder オブジェクト (Tobj::FactoryFinder)

FactoryFinder オブジェクト (com.beasys.Tobj.FactoryFinder)

InterfaceRepository

InterfaceRepository オブジェクト (CORBA::Repository)

InterfaceRepository オブジェクト (org.omg.CORBA.Repository)

NameService

CORBA ネーミング・サービス (Tobj::NameService)

CORBA ネーミング・サービス (com.beasys.Tobj.NameService)

NotificationService

EventChannelFactory オブジェクト

(CosNotifyChannelAdmin::
EventChannelFactory
)

EventChannelFactory オブジェクト

(CosNotifyChannelAdmin.
EventChannelFactory
)

SecurityCurrent

SecurityCurrent オブジェクト (SecurityLevel2::Current)

SecurityCurrent オブジェクト (org.omg.SecurityLevel2.Current)

TransactionCurrent

OTS Current オブジェクト (Tobj::TransactionCurrent)

OTS Current object (com.beasys.Tobj.
TransactionCurrent
)

Tobj_SimpleEventsService

BEA Simple Events
ChannelFactory object (Tobj_SimpleEvents::
ChannelFactory
)

BEA シンプル・イベント ChannelFactory オブジェクト (Tobj_SimpleEvents.ChannelFactory)


 

表 4-3 は、Tobj モジュールの例外を示しています。

表 4-3 Tobj モジュールの例外

C++ の例外

Java の例外

説明

Tobj::
InvalidName

com.beasys.Tobj.
InvalidName

id が表 4-2 で指定されたどの名前でもない場合に生成されます。サーバでは、SecurityCurrent が渡された場合にも resolve_initial_referencesInvalidName が生成されます。

Tobj::
InvalidDomain

com.beasys.Tobj.
InvalidDomain

サーバ・アプリケーションで、BEA Tuxedo サーバ環境が起動していない場合に生成されます。

CORBA::
NO_PERMISSION

org.omg.CORBA.
NO_PERMISSION

idTransactionCurrent または SecurityCurrent で、クライアントの別の Bootstrap オブジェクトが Current オブジェクトを所有している場合に生成されます。

BAD_PARAM

org.omg.CORBA.
BAD_PARAM

オブジェクトがニルである場合、またはオブジェクトに格納されているホスト名が接続と一致しない場合に生成されます。

IMP_LIMIT

org.omg.CORBA.
IMP_LIMIT

register_callback_port メソッドが複数回呼び出された場合に発生します。


 

C++ のマッピング

リスト 4-1 は、Tobj_bootstrap.h ファイルでの C++ の宣言を示しています。

コード リスト 4-1 Tobj_boostrap.h の宣言

#include <CORBA.h>

class Tobj_Bootstrap {
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( );
};

Java マッピング

リスト 4-2 は、Tobj_Bootstrap.java のマッピングを示しています。

コード リスト 4-2 Tobj_Bootstrap.java のマッピング

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;

public void register_callback_port(orb.omg.CORBA.Object objref)
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;
}

Microsoft デスクトップ・クライアントのマッピング

Bootstrap オブジェクトは、Microsoft デスクトップでインプリメントされるクライアントが使用できるように BEA ActiveX クライアント・ソフトウェアで提供されます。デスクトップ・クライアントでは、次の 2 つのインターフェイスを使用できます。

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

リスト 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++ メンバ関数について説明します。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy