BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic Enterprise Connectivity ユーザーズ ガイド(非推奨) > CORBA オブジェクトを呼び出す WebLogic Server クライアントの作成 |
WebLogic Enterprise Connectivity ユーザーズ ガイド(非推奨)
|
CORBA オブジェクトを呼び出す WebLogic Server クライアントの作成
以下の節では、WebLogic Server から BEA Tuxedo CORBA オブジェクトにアクセスするための要件について説明します。
BEA Tuxedo CORBA オブジェクトを呼び出す WebLogic Server クライアントを実装するには、あらかじめ以下の作業を行っておく必要があります。
WebLogic Server クライアントからアクセスする BEA Tuxedo オブジェクトを持つ BEA Tuxedo ドメインごとに、WLEC 接続プールをコンフィグレーションします。WebLogic Server クライアント用に確立されたセキュリティ コンテキストは WLEC 接続プールを介して BEA Tuxedo ドメインに伝播されるので、WLEC 接続プールはセキュリティ コンテキスト伝播機能の基礎であると言えます。
WLEC 接続プールを使用する前に、WL_HOME/lib/wleorb.jar、 WL_HOME/lib/wlepool.jar、TUXDIR/udataobj/java/jdk/wleclient.jar を、startAdminWebLogic.sh ファイルまたは startAdminWebLogic.cmd ファイルの CLASSPATH 変数に追加します。WLE 5.1 からサービスを受ける EJB を要求する JSP を使用している場合は、WLE 5.1 wlej2eecl.jar ファイルの場所を startAdminWebLogic.sh ファイルまたは startAdminWebLogic.cmd ファイルの CLASSPATH 変数に追加します。
セキュリティ コンテキストを伝播するために、新規の WLEC 接続プールを作成します。WLEC 接続プールを作成するには、以下の手順に従います。
WebLogic Server 環境と BEA Tuxedo CORBA 環境との間で証明書を使用するということは、WebLogic Server 環境から CORBA オブジェクトへの接続を確立するときに、新規の SSL ハンドシェークが開始されるということです。同じ SSL ネットワーク接続を使用して複数のクライアント リクエストをサポートするには、そうした処理を行うように証明書を次のように設定しなければなりません。
BEA Tuxedo CORBA アプリケーションでセキュリティをコンフィグレーションする方法については、『CORBA セキュリティ機能の概要』を参照してください。
この節では、WebLogic Server クライアントから BEA Tuxedo CORBA オブジェクトにアクセスするための手順について説明します。
クライアント スタブは、BEA Tuxedo CORBA オブジェクトの操作に対するプログラミング インタフェースを提供します。クライアント スタブを作成するには、WebLogic Server クライアントからアクセスする BEA Tuxedo CORBA オブジェクト用の OMG IDL (Object Management Group Interface Definition Language) ファイルをコンパイルします。BEA Tuxedo CORBA オブジェクトのクライアント スタブを作成するには、BEA Tuxedo ソフトウェアに含まれている idl コンパイラを使います。
WebLogic Server の CLASSPATH 環境変数に、BEA Tuxedo CORBA オブジェクトのクライアント スタブが入っているディレクトリが含まれていることを確認します。
以下の Java パッケージを WebLogic Server クライアントにインポートします。
手順 3. WebLogic Server クライアントを BEA Tuxedo ドメインに接続する
各 WLEC 接続プールは、関連付けられている BEA Tuxedo ドメインへのアクセスを可能にする Tobj_Bootstrap オブジェクトを持っています。WebLogic Enterprise Connectivity は、BootstrapFactory と呼ばれるオブジェクトを提供し、これが特定の BEA Tuxedo ドメインの Tobj_Bootstrap オブジェクトへのアクセスを提供します。BEA Tuxedo ドメインに接続するには、WebLogic Server クライアントに以下のコードを追加します。
Tobj_Bootstrap myBootstrap = Tobj_BootstrapFactory.getClientContext("myPool");
手順 4. BEA Tuxedo CORBA のオブジェクト参照を取得する
WebLogic Server クライアントで FactoryFinder を使用して、BEA Tuxedo CORBA オブジェクトへの参照を取得します。
org.omg.CORBA.Object myFFObject =
myBootstrap.resolve_initial_references("FactoryFinder");
FactoryFinder myFactFinder =
FactoryFinderHelper.narrow(myFFObject);
org.omg.CORBA.Object myFactoryRef =
myFactFinder.find_one_factory_by_id(myFactoryHelper.id());
myFactory =
myFactoryHelper.narrow(myFactoryRef);
Simple mySimple = mySimpleFactory.find_simple();
FactoryFinder オブジェクトについては、BEA Tuxedo のマニュアルの『CORBA プログラミング リファレンス』を参照してください。
BEA Tuxedo CORBA オブジェクトには、トランザクションのスコープ内でアクセスできます。以下のコード例では、TransactionCurrent オブジェクトを使用して、トランザクション スコープ内で BEA Tuxedo CORBA オブジェクトにアクセスします。BEA Tuxedo CORBA オブジェクトにアクセスするときには、UserTransaction オブジェクトも使用できます。
トランザクションを開始するには、WebLogic Server クライアントに以下のコードを追加します。
org.omg.CORBA.Object myTCObject =
myBootstrap.resolve_initial_references("TransactionCurrent");
CosTransactions.Current myTransaction =
CosTransactions.CurrentHelper.narrow(myTCObject);
myTransaction.begin();
手順 6. BEA Tuxedo CORBA オブジェクトとその操作にアクセスする
WLEC 接続プールに関連付けられている BEA Tuxedo ドメインに属する BEA Tuxedo CORBA オブジェクトのメソッドを呼び出します。
トランザクション コンテキスト内のオブジェクトにアクセスする場合は、以下の TransactionCurrent メソッドを使用してそのトランザクション コンテキストの操作とクエリを行うことができます。
トランザクション コンテキスト内の BEA Tuxedo CORBA オブジェクトにアクセスした場合、以下のいずれかの TransactionCurrent メソッドを使用してトランザクションを終了します。
この節では、BEA Tuxedo 環境でのトランザクションについてさらに詳しく説明します。
BEA Tuxedo CORBA トランザクション サービスを使用すると、単一のアプリケーション プロセスの複数のスレッドから、別個のトランザクションを同時に開始できます。たとえば、2 つのスレッドが CosTransactions.Current.begin() と UserTransaction.begin() を同時に呼び出す場合、どちらのスレッドも、それぞれのトランザクションに対応する別個のトランザクション コンテキストを持ちます。
CORBA トランザクション サービスでは、単一のアプリケーションの複数のスレッドが、同じトランザクションを同時に扱うことはできません。CosTransactions を使用する場合、以下のようにトランザクションの中断と再開を行って、複数のスレッド内でそのトランザクションを使用します。
中断されていないトランザクションをスレッドが再開しようとすると、BEA Tuxedo システムは InvalidControl 例外を送出します。
UserTransaction では、suspend() と resume() をサポートしていません。したがって、UserTransaction を使用するときには、複数のスレッドで 1 つのトランザクションを使うことはできません。
WebLogic Enterprise Connectivity コンポーネントでは、単一の WebLogic Server クライアントで複数の WLEC 接続プールを同時にアクティブにできます。CosTransactions.Current.begin() や UserTransaction.begin() を呼び出してトランザクション コンテキストを作成すると、BEA Tuxedo システムは、そのトランザクションを WLEC 接続プールに関連付けます。そのトランザクションのスコープ内で行われる呼び出しはすべて、そのトランザクションの WLEC 接続プールに関連付けられているドメイン内に存在するオブジェクトに対するものでなければなりません。
1 つのトランザクションが複数の BEA Tuxedo ドメインにまたがることはできません。別のドメイン内のオブジェクトを呼び出そうとすると、BEA Tuxedo システムは INVALID_TRANSACTION 例外を送出します。
WLEC クライアントがトランザクションを開始または再開すると、WLEC 接続プールのインフラストラクチャは、そのトランザクションのコンテキスト内で送信される要求のための接続を確保します。WebLogic Enterprise Connectivity は、そのトランザクション コンテキスト外の要求を送信するためにこの接続を使うことはありません。WebLogic Enterprise Connectivity は、そのトランザクションがコミット、ロールバック、もしくは中断されるまでその接続を確保します。
注意: suspend() と resume() を使用できるのは CosTransactions だけです。
同時にアクティブにできるトランザクションの数は、プール内で使用できる接続の数によって決まります。スレッドがトランザクションを開始または再開するときに接続が利用できない場合、WebLogic Enterprise Connectivity は NO_RESOURCES 例外を送出します。
各スレッドは、独自のトランザクション コンテキストを備えています。スレッドがトランザクションを開始または再開すると、そのトランザクションはコミット、ロールバック、または中断されるまでアクティブになります。その後に WebLogic Server クライアントを呼び出しても、それらが同じスレッド内で実行される保証はありません。したがって、スレッドでは、トランザクションをコミット、ロールバック、または中断してから、WebLogic Server クライアントの呼び出しを終了することが大切です。
注意: suspend() と resume() を使用できるのは CosTransactions だけです。
必要であれば、次の手順で、WebLogic Server クライアントへの複数の呼び出しで 1 つのトランザクションを使用できます。
WLS クライアントへの次の呼び出しを行わないうちにトランザクションがタイムアウトする可能性があるので、この方法を使用するときには注意してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |