![]() |
![]() |
|
|
BEA Tuxedo CORBA クライアントと WebLogic Server EJB の接続
ここでは、次の内容について説明します。
Wlstrader Value Type サンプル・アプリケーションの概要
Wlstrader Value Type サンプル・アプリケーションは、RMI over IIOP クライアントと EJB の間の接続を例示します。特に、BEA Tuxedo で開発された CORBA C++ クライアント・アプリケーションがどのようにして WebLogic Server の EJB とやり取りできるのかが示されます。アプリケーションでは、WebLogic Server の例に含まれている Trader EJB が利用されます。Wlstrader Value Type のサンプルでは、Trader サンプル・アプリケーションのコンポーネントを利用すると同時に、独自のビルドと実行の手続きを行います。
図 2-1 は、Wlstrader Value Type サンプル・アプリケーションで実現される接続を説明しています。
図2-1 CORBA C++ クライアントから WebLogic Server EJB
Wlstrader Value Type の例で、BEA Tuxedo CORBA C++ クライアントは値型を利用し、OBV (Object-by-Value) を渡します。これで、IDL インターフェイスの RMI over IIOP 呼び出しがサポートされ、WebLogic Server TraderBean Enterprise JavaBean (EJB) への接続が実現されます。
値型は、値をシステム間で移動できるクラスを表します。値型は、リモート・メソッドの引数または結果として、あるいはリモートで渡されるほかのオブジェクトのフィールドとして渡すことができます。BEA Tuxedo CORBA での値型のサポートについては、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA プログラミング・リファレンス』の「第13 章 OMG IDL 文の C++ へのマッピング」を参照してください。
CORBA クライアントでは、WebLogic Server の JNDI インプリメンテーションで提供される COSNaming サービス層を呼び出して WebLogic Server インターオペラブル・オブジェクト・リファレンス (IOR) を取得します。CORBA ネーム・サービスおよび COSNaming データ構造体については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA ネーム・サービス』を参照してください。
Wlstrader Value Type サンプル・アプリケーションのコンポーネント
この節では、Wlstrader Value Type サンプル・アプリケーションのコンポーネントと操作について説明します。この節の内容は次のとおりです。
WebLogic Server Trader サンプル・アプリケーション
Wlstrader Value Type のサンプルは、WebLogic Server Trader サンプル・アプリケーションのコンポーネントに基づき、その XML デプロイメント・ファイルと Trader EJB を利用します。この例から最高の恩恵を得るためには、ソース・コード・ファイルを読み通して設計と手順を理解してください。デプロイメント・ファイルを調べると、Trader EJB の全体的な構造を理解できます。
Trader サンプルの WebLogic Server コード・サンプル・ファイルは、wlserver6
\samples
\examples
\rmi_iiop
\ejb
\rmi_iiop
ディレクトリにあります。
Java インターフェイス |
説明 |
---|---|
|
このインターフェイスのメソッドは、 |
|
このインターフェイスは、 |
WebLogic Server から CORBA クライアントへのマッピング
WebLogic Server アプリケーションから CORBA クライアントへのマッピングを派生させる場合、そのマッピング情報のソースは Java ソース・ファイルで定義されている EJB クラスです。WebLogic Server には、必要な CORBA IDL ファイルを生成するための weblogic.ejbc
ユーティリティがあります。それらのファイルは、ターゲット EJB の状態と振る舞いの CORBA ビューを表します。
weblogic.ejbc
ユーティリティでは、次の処理が実行されます。
weblogic.ejbc
ユーティリティでは、多くのコマンド修飾子がサポートされています。Wlstrader Value Type の例では、ejbc
のステップでコマンド行で次の修飾子を呼び出します。
-idl
すべての適切なクラスの CORBA インターフェイス定義言語 (IDL) ファイルが作成されます。
-idlDirectory idlSources
idlSources
という名前のディレクトリ・ツリーが作成され、IDL ファイルがこの位置に格納されます。ディレクトリ・ツリーの構造は、Java パッケージの階層に対応します。
-idlOverwrite
idlSources
出力ディレクトリの既存の IDL ファイルが上書きされます。
作成されたファイルは BEA Tuxedo IDL コンパイラを使用して処理され、idlSources
ディレクトリからソース・ファイルが読み取られて、CORBA C++ スタブ・ファイルおよびスケルトン・ファイルが生成されます。値型を除くすべての CORBA データ型は、生成されたそれらのファイルで満たされます。値型は、それらが定義または参照される各プラットフォームでインプリメントする必要があります。-i
修飾子を指定すると、IDL コンパイラで、FileName
_i.h
および FileName
_i.cpp
という名前のインプリメンテーション・ファイルが作成されます。たとえば、次の構文では、TradeResult_i.h
および TradeResult_i.cpp
というインプリメンテーション・ファイルが作成されます。
idl -IidlSources -i idlSources
\examples
\rmi_iiop
\ejb
\rmi_iiop
\TradeResult.idl
生成されたソース・ファイルは、値型のアプリケーション定義オペレーションのインプリメンテーションを提供します。インプリメンテーション・ファイルは、CORBA クライアント・アプリケーションに含められます。
BEA Tuxedo CORBA C++ クライアント
CORBA C++ クライアント・プログラム tuxclient
では、Trader に基づく演習が行われます。Trader
トランザクションの結果は、TradeResult
値型を通じてクライアントに返されます。tuxclient
アプリケーションでは、次の操作が実行されます。
tuxclient.cpp
から抜粋したコードであり、register_value_factory
オペレーションを示しています。リスト 2-1 tuxclient.cpp-値ファクトリの登録
. . .
// 受信する可能性のあるすべての値型の値ファクトリ
// を登録する必要がある
//
examples_rmi_iiop_ejb_rmi_iiop_TradeResult_factory* TRf = new
examples_rmi_iiop_ejb_rmi_iiop_TradeResult_factory();
orb->register_value_factory((char*const)
examples::rmi_iiop::ejb::rmi_iiop::_tc_TradeResult->id(), TRf);
//
. . .
ior.txt
ファイルを読み取ります。Trader
のインスタンスを作成します。WStringValue
値型を利用します。 TradeResult
値型から実際の取引株式数を取得します。リスト 2-2 の tuxclient.cpp
の抜粋コードには、Trader
インスタンスを作成し、BEAS の株式を購入するステップが含まれています。
リスト 2-2 tuxclient.cpp-Trader の作成と株式の購入
. . .
// Trader インスタンスの作成
::examples::rmi_iiop::ejb::rmi_iiop::Trader_ptr trader =
home->create();
// 株式の購入
CORBA::WStringValue_ptr BEASsym = new
CORBA::WStringValue(CORBA::wstring_dup((wchar_t *)L"BEAS"));
::examples::rmi_iiop::ejb::rmi_iiop::TradeResult_ptr result;
cout << "Buying 3000 shares of BEAS" << endl;
result = trader->buy(BEASsym, 3000);
. . .
CORBA クライアントからの「購入」要求は、BEAS という銘柄の BEA 社の株式 3000 株です。実際に取り引きされる株式数は、WebLogic Server の例の ejb-jar.xml
デプロイメント・ファイルで定義されている tradeLimit
しきい値によって 500 になります。
リスト 2-3 ejb-jar.xml で定義された tradeLimit
. . .
<env-entry-name>tradeLimit
</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>500
</env-entry-value>
. . .
Wlstrader Value Type サンプル・アプリケーションを実行して別の結果を得るには、ejb-jar.xml
ファイルの定義、または tuxclient.cpp
ソース・ファイルの定数を変更します。
Wlstrader Value Type サンプル・アプリケーションのビルドと実行
この節では、Wlstrader Value Type サンプル・アプリケーションをビルドおよび実行するプロセスを説明します。
例を実行する前に、host2ior
ユーティリティを実行して WebLogic Server インターオペラブル・オブジェクト・リファレンス (IOR) を取得する必要があります。WebLogic Server のインストールでは、これを必ず 1 回行います。このファイルは、WebLogic Server をインストールしてからアプリケーションを実行するまでにいつでも取得できます。
wlstrader サンプル・アプリケーションをビルドおよび実行するには、次の手順に従います。各ステップは、以降の節で詳しく説明します。ここで詳しく説明する手順は、WebLogic Server の wlserver6
\samples
\examples
\rmi_iiop
\ejb
\rmi_iiop
\package-summary.html
の情報を補足するものです。
開発環境の設定
Java で開発するときには、管理された開発環境を利用するようにしてください。
TUXDIR
環境変数を BEA Tuxedo のインストール・ディレクトリに設定
します。
次に例を示します。
Windows
> set TUXDIR=D:
\TUXDIR
UNIX
ksh prompt> export TUXDIR=/usr/local/TUXDIR
BEA Tuxedo Wlstrader Value Type ファイルのコピー
build
コマンド・スクリプトの名前を変更し、BEA Tuxedo Wlstrader Value Type のファイルを BEA Tuxedo CORBA サンプル・ディレクトリから WebLogic Server の例のビルド領域にコピーします。
build
コマンド・スクリプトの名前を識別可能な一意の名前に変更しま
す。ここからは、スクリプト名 tuxbuild
を使用します。このファイルは、
build
コマンド・スクリプトが格納されている WebLogic Server の例のディ
レクトリにコピーします。
次に例を示します。
Windows
rename %TUXDIR%
\samples
\corba
\wlstrader
\build.cmd tuxbuild.cmd
UNIX
mv $TUXDIR/samples/corba/wlstrader/build.sh tuxbuild.sh
wlstrader
ディレクトリから
WebLogic Server の例のビルド領域にファイルをコピーします。
次に例を示します。
Windows
copy
%TUXDIR%
\samples
\corba
\wlstrader
\*.*
\
D:bea
\wlserver6
\samples
\examples
\rmi_iiop
\ejb
\rmi_iiop
\*.*
UNIX
cp $TUXDIR/samples/corba/wlstrader/*.*
/usr/local/wlserver6/samples/examples/rmi_iiop/ejb/rmi_iiop/*.*
表 2-3 のサンプル・ファイルは、現時点で WebLogic Server の例のビルド領域にあるはずです。
例のビルド
この例で名前変更した build スクリプトを実行します。このファイルは、BEA Tuxedo の samples
\corba
\wlstrader
ディレクトリから WebLogic Server の samples
\examples
\rmi_iiop
\ejb
\rmi_iiop
ディレクトリにコピーする前に名前変更したファイルです。このスクリプトでは、次のステップが実行されます (Windows 環境)。
TUXDIR
環境変数を設定します。このステップは、tuxclient.cmd
スクリプ
トで修正できます。または、TUXDIR
が既に定義されている場合はコメント・
アウトすることもできます。
%TUXDIR%
\bin
ディレクトリで idl
実行可能プログラムを定義し、必要なコ
マンド行パラメータを設定して、IDL2CPP
環境変数を設定します。
build
ディレクトリ構造を作成し、デプロイメント記述子をコピーし、
*.gif
画像をコピーします。
> mkdir build build
\META-INF build
\images
> copy *.xml build
\META-INF
> copy *.gif build
\images
> javac -d build Trader.java TraderHome.java
TraderResult.java TraderBean.java
> cd build
> jar cv0f std_ejb_over_iiop.jar META-INF examples images
> cd ..
weblogic.ejbc
ユーティリティを実行します。生成
される IDL ファイルは idlSources
ディレクトリに配置されるように指定し
ます。
> java weblogic.ejbc -compiler javac -keepgenerated
\
-idl -idlDirectory idlSources
-iiop buildstd_ejb_over_iiop.jar
\
%APPLICATIONS%ejb_over_iiop.jar
CLIENT_CLASSES
ターゲット変数で定義されたディレクトリにコンパイルし
ます。
> javac -d %CLIENT_CLASSES% Trader.java TraderHome.java
TradeResult.java Client.java
weblogic.ejbc
のステップでビルドされた IDL
ファイルに対して IDL
コン
パイラを実行し、C++ ソース・ファイルを作成します。
>%IDL2CPP% idlSources
\examples
\rmi_iiop
\ejb
\rmi_iiop
\Trader.idl
. . . >%IDL2CPP% idlSources
\javax
\ejb
\RemoveException.idl
buildobjclient
コマンドを呼び出して、CORBA C++ クライアントの実行
可能プログラム tuxclient.exe
をビルドします。
サーバのコンフィギュレーション
WebLogic Server の例のマニュアルで定義されているステップを調べてインプリメントし、WebLogic Server を起動します。「Starting WebLogic Server with the Examples Configuration」を参照してください。すべての例のコンフィギュレーション属性を格納するコンフィギュレーション・ファイル (WebLogic Server インストール・ディレクトリの config
\examples
\config.xml
) を調べます。サーバ起動スクリプトは、次のようにして実行します。
Windows
prompt> startExampleServer
Windows プラットフォームでは、[スタート] メニューから起動することもできます。
UNIX
$ sh startExamplesServer.sh
例の実行
環境を設定し、tuxclient.exe
実行可能プログラムを起動して、Wlstrader Value Type サンプル・プログラムを実行します。Windows 環境では次のように行います。
ejb_over_iiop.jar
ファイルを WebLogic Server の CLASSPATH
に追加しま
す。次に例を示します。
prompt> set CLASSPATH=%CLASSPATH%;%WL_HOME%
\config
\ examples
\applications
\ejb_over_iiop.jar
host2ior
ユーティリティを実行して、WebLogic Server インターオペラブ
ル・オブジェクト・リファレンス (IOR) を取得しておきます。ior.txt
ファ
イルは、tuxclient.exe
CORBA C++ クライアント・プログラムからアク
セス可能でなければなりません。このファイルは、WebLogic Server のイン
ストールごとに 1 つ作成します。次に例を示します。
prompt> java utils.host2ior
hostname port
tuxclient.exe
CORBA クライアント・プログラムを起動しま
す。
prompt> tuxclient.exe
Creating a trader
Buying 3000 shares of BEAS
500 shares bought
Buying 100 shares of PSFT
100 shares bought
End statelessSession.Client
リファレンス情報
WebLogic Server アプリケーションとやり取りする BEA Tuxedo CORBA クライアント・アプリケーションの開発プロセスは EJB から始まります。新しい WebLogic Server アプリケーションを作成する場合、その最初のステップはサーバを設計およびインプリメントすることです。
以降の節では、RMI over IIOP CORBA クライアントと WebLogic Server EJB の間の接続をインプリメントするために必要な手順についての情報の参照先を示します。
WebLogic Server
次のトピックは、WebLogic Server オンライン・マニュアルで参照できます。
Object Management Group (OMG)
CORBA オブジェクトおよび値型 (値で渡すことができるオブジェクト) の情報は、OMG の Web サイト (http://www.omg.org) で参照できます。
BEA Tuxedo CORBA
BEA Tuxedo のオンライン・マニュアルでは、BEA Tuxedo 製品の CORBA について詳しく説明されています。ここで紹介する参照先では、CORBA クライアントの作成、COSNaming サービス、IDL コマンド、および BEA Tuxedo の値型のサポートについての情報を参照できます。
![]() |
![]() |
![]() |
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|