注意:
|
Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、サポートされなくなりました。すべてのOracle Tuxedo CORBA JavaクライアントおよびOracle Tuxedo CORBA JavaクライアントORBのテキスト・リファレンスとコード・サンプルは、サード・パーティ製のJava ORBライブラリを実装または実行する際の参考や、プログラマの参照用としてのみ使用してください。
|
サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートまたはドキュメントは提供していません。
Wrapperサンプル・アプリケーションでは、クラスに登録した学生の口座にクラスの代金が請求され、その口座残高が更新されます。また、学生は自身の口座残高を照会できます。
Wrapperサンプル・アプリケーションでは、ATMIサービスを使用します。Billingサーバー・アプリケーションには、
Tellerオブジェクトがあり、ATMIアプリケーションのTellerを呼び出します。Tellerアプリケーションは、次の課金用のオペレーションを実行します。
Universityデータベースは、口座情報を含めるために変更されます。
図6-1に、Wrapperサンプル・アプリケーションのしくみを示します。
Wrapperサンプル・アプリケーションの開発プロセス
注意:
|
この項に記載されている手順はすでに完了しており、Wrapperサンプル・アプリケーションに組み込まれています。
|
ATMIサービスをラッピングする際は、ATMIサービスと相互運用するオブジェクト、およびそのオブジェクトを作成するファクトリを定義する必要があります。Wrapperサンプル・アプリケーションの場合、
Tellerおよび
TellerFactoryオブジェクトがATMIサービスと情報をやりとりします。開発プロセスでは、Object Management Group (OMG)インタフェース定義言語(IDL)で
Tellerおよび
TellerFactoryオブジェクトのインタフェースを次のように定義します。
|
|
|
|
Tellerオブジェクトへのオブジェクト参照を返します。
|
|
|
ATMIアプリケーションと相互運用して、課金用のオペレーションを実行します。
|
|
Balanceフィールドを
StudentDetails構造体に追加する必要があります。クライアント・アプリケーションでは、
Balanceフィールドを使用して学生の口座残高を示します。さらに、ユーザー例外
DelinquentAccountも追加します。
開発プロセスでは、クライアント・アプリケーションにコードを追加して、
register_for_courses()オペレーションによって生成されるユーザー例外
Delinquent Accountを処理します。
開発プロセスでは、Billingサーバー・アプリケーションに次を記述します。
•
|
Tellerオブジェクトの get_balance()、 credit()、および debit()オペレーションのメソッド実装。これらのメソッド実装には、次の処理を行うコードを含める必要があります。
|
•
|
ATMIアプリケーションTellerに送信するデータをFMLメッセージ・バッファに格納します。
|
•
|
ATMIアプリケーションTellerを呼び出します。
|
•
|
ATMIアプリケーションTellerから返されたFMLメッセージ・バッファから情報を抽出します。
|
•
|
FMLメッセージ・バッファからUniversityサーバー・アプリケーションに情報を返します。
|
•
|
TellerFactoryオブジェクトの find_teller()オペレーションのメソッド実装。
|
•
|
TellerFactoryオブジェクトを作成および登録し、 open_XA_RMおよび close_XA_RM関数を呼び出すBillingサーバー・オブジェクト。
|
開発プロセスでは、Universityサーバー・アプリケーションに次のコードを追加します。
•
|
Universityサーバー・アプリケーションのコードのサーバー初期化部分にBootstrapオブジェクトを組み込んで、 TellerFactoryオブジェクトのFactoryFinderオブジェクトを取得します。Universityサーバー・アプリケーションでは、クライアント・アプリケーションの場合と同様にBootstrapおよびFactoryFinderオブジェクトを使用します。
|
•
|
Universityサーバー・アプリケーションのコードには、Registrarオブジェクトのサーバントのコンストラクタに TellerFactoryオブジェクトの参照を含めます。 TellerFactoryオブジェクトは、 Tellerオブジェクトの作成に使用します。
|
•
|
Registrarオブジェクトの get_student_details()および register_for_courses()オペレーションのメソッド実装では、 Tellerオブジェクトの get_balance()および debit()オペレーションを呼び出します。
|
ATMIサービスをラッピングするサーバー・アプリケーションの記述方法については、
『CORBAサーバー・アプリケーションの作成』を参照してください。
開発プロセスでは、
UBBCONFIGファイルに次の変更を加える必要があります。
•
|
UBBCONFIGファイルの GROUPSセクションで次のサーバー・グループを定義します。
|
•
|
ORA_GRP。これには、Universityサーバー・アプリケーション、Tellerアプリケーション、およびUniversityデータベースのサーバー・アプリケーションが含まれます。このサーバー・グループによって、Universityサーバー・アプリケーションとTellerアプリケーションの両方からUniversityデータベースへのアクセスが可能になります。
|
•
|
APP_GRP。これには、Billingサーバー・アプリケーションが含まれます。
|
•
|
Wrapperサンプル・アプリケーションのサーバー・アプリケーションを指定する。サーバー・アプリケーションは、 UBBCONFIGファイルの SERVERSセクションの順序で起動します。サーバー・アプリケーションの起動順序は次のとおりです。
|
開発プロセスでは、
Tellerおよび
TellerFactoryオブジェクトのアクティブ化ポリシーとトランザクション・ポリシーを定義する必要があります。
Tellerおよび
TellerFactoryオブジェクトの各ポリシーは次のように設定します。
•
|
Tellerオブジェクトのアクティブ化ポリシーは processに、トランザクション・ポリシーは optionalに設定します。
|
•
|
TellerFactoryオブジェクトのアクティブ化ポリシーは processに、トランザクション・ポリシーは ignoreに設定します。
|
CORBAオブジェクトのアクティブ化ポリシーとトランザクション・ポリシーの定義については、
『CORBAサーバー・アプリケーションの作成』を参照してください。
Wrapperサンプル・アプリケーションをビルドするには、次の手順に従います。
1.
|
Wrapperサンプル・アプリケーションのファイルをコピーします。
|
2.
|
Wrapperサンプル・アプリケーションのファイルの保護を変更します。
|
7.
|
クライアントおよびサーバー・サンプル・アプリケーションをビルドします。
|
注意:
|
Wrapperサンプル・アプリケーションをビルドまたは実行する前に、 第2章「環境設定」の手順を実行しておく必要があります。
|
Wrapperサンプル・アプリケーションのファイルを作業ディレクトリにコピーする
Wrapperサンプル・アプリケーションの各ファイルは、次のディレクトリにあります。
drive:\TUXDIR\samples\corba\university\
wrapper
/usr/TUXDIR/samples/corba/university/
wrapper
また、
utilsディレクトリを作業ディレクトリにコピーする必要があります。
utilsディレクトリには、Universityデータベースのログ、トレースおよびアクセスを設定するファイルが格納されています。
Wrapperサンプル・アプリケーションを作成するには、
表6-1に示すファイルを使用します。
表6-1
Wrapperサンプル・アプリケーションに含まれるファイル
|
|
|
Tellerおよび TellerFactoryインタフェースを宣言するOMG IDL。
|
|
CourseSynopsisEnumerator、 Registrar、および RegistrarFactoryインタフェースを宣言するOMG IDL。
|
|
Wrapperサンプル・アプリケーションのBillingサーバー・アプリケーション用C++ソース・コード。
|
|
Wrapperサンプル・アプリケーションのUniversityサーバー・アプリケーション用C++ソース・コード。
|
|
Tellerおよび TellerFactoryインタフェースのメソッド実装用C++ソース・コード。
|
|
CourseSynopsisEnumerator、 Registrar、および RegistrarFactoryインタフェースのメソッド実装用C++ソース・コード。
|
|
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーション用C++ソース・コード。
|
univw_utils.h univw_utils.cpp
|
CORBA C++クライアント・アプリケーションのデータベース・アクセス関数を定義するファイル。
|
|
Wrapperサンプル・アプリケーションのUniversityサーバー・アプリケーション用ICFファイル。
|
|
Wrapperサンプル・アプリケーションのBillingサーバー・アプリケーション用ICFファイル。
|
|
Wrapperサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するUNIXスクリプト。
|
tellw_flds、tellw_u.c、tellw_c.h、tellws.ec
|
|
|
Wrapperサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するMS-DOSコマンド。
|
|
UNIXオペレーティング・システム用の UBBCONFIGファイル。
|
|
Windowsオペレーティング・システム用の UBBCONFIGファイル。
|
|
UNIXオペレーティング・システムでのWrapperサンプル・アプリケーション用の makefile。
|
|
Windowsオペレーティング・システムでのWrapperサンプル・アプリケーション用の makefile。
|
log.cpp、 log.h、 log_client.cpp、 log_server.cpp
|
サンプル・アプリケーションにログ機能とトレース機能を提供するクライアント・アプリケーションとサーバー・アプリケーションのファイル。これらのファイルは、 \utilsディレクトリにあります。
|
oradbconn.cppおよび oranoconn.cpp
|
Oracle SQLデータベース・インスタンスへのアクセスを提供するファイル。これらのファイルは、 \utilsディレクトリにあります。
|
samplesdb.cppおよび samplesdb.h
|
サンプル・アプリケーションでのデータベース例外に出力関数を提供するファイル。これらのファイルは、 \utilsディレクトリにあります。
|
unique_id.cpp、 unique_id.h
|
サンプル・アプリケーションのC++ Unique IDクラスのルーチン。これらのファイルは、 \utilsディレクトリにあります。
|
samplesdbsql.hおよび samplesdbsql.pc
|
SQLデータベースへのアクセスを実装するC++クラスのメソッド。これらのファイルは、 \utilsディレクトリにあります。
|
|
Universityデータベース用のSQL。このファイルは、 \utilsディレクトリにあります。
|
Wrapperサンプル・アプリケーションのファイル保護の属性を変更する
Oracle Tuxedoソフトウェアのインストール時には、サンプル・アプリケーションは読取り専用に設定されています。Wrapperサンプル・アプリケーションのファイルを編集または作成するには、次のように作業ディレクトリにコピーしたファイル保護の属性を変更する必要があります。
prompt>attrib -r drive:\workdirectory\*.*
prompt>chmod u+rw /workdirectory/*.*
次のコマンドを使用して、Wrapperサンプル・アプリケーションのクライアント・アプリケーションとサーバー・アプリケーションのビルドに使用する環境変数を設定します。
次のコマンドを使用して、Wrapperサンプル・アプリケーションで使用するUniversityデータベースを初期化します。
prompt>nmake -f makefilew.nt initdb
prompt>make -f makefilew.mk initdb
次のコマンドを使用して、
UBBCONFIGファイルをロードします。
prompt>tmloadcf -y ubb_w.nt
prompt>tmloadcf -y ubb_w.mk
UBBCONFIGファイルの作成プロセスでは、アプリケーション・パスワードの入力が求められます。このパスワードは、クライアント・アプリケーションへのログオンに使用されます。パスワードを入力してEnterキーを押します。その際、パスワードを再入力してパスワードの確認を求めるメッセージが表示されます。
トランザクション・ログには、CORBAアプリケーションでのトランザクション処理が記録されます。開発プロセスでは、
UBBCONFIGファイルの
TLOGDEVICEパラメータで指定したトランザクション・ログの場所を定義する必要があります。Wrapperサンプル・アプリケーションの場合、トランザクション・ログは作業ディレクトリに格納されています。
Wrapperサンプル・アプリケーションのトランザクション・ログを開くには、次の手順に従います。
1.
|
次のコマンドを入力して、会話型の管理インタフェースを起動します。
|
2.
|
次のコマンドを入力して、トランザクション・ログを作成します。
|
crdl -b blocks -z directorypath
crlog -m SITE1
blocksにトランザクション・ログに割り当てるブロック数を指定し、
directorypathにトランザクション・ログの場所を指定します。
directorypathオプションは、
UBBCONFIGファイルの
TLOGDEVICEパラメータで指定した場所と一致する必要があります。Windowsでのコマンドの例を次に示します。
crdl -b 500 -z c:¥mysamples¥university¥wrapper¥TLOG
3.
|
「q」を入力して、会話型の管理インタフェースを終了します。
|
Wrapperサンプル・アプリケーションのコンパイル
開発プロセスでは、
buildobjclientおよび
buildobjserverコマンドを使用して、クライアント・アプリケーションとサーバー・アプリケーションをビルドします。ただし、Wrapperサンプル・アプリケーションの場合は、この手順は不要です。Wrapperサンプル・アプリケーションのディレクトリには、
makefileが格納されており、これによりクライアントおよびサーバー・サンプル・アプリケーションがビルドされます。
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーションとサーバー・アプリケーションをビルドするには、次のコマンドを使用します。
prompt>nmake -f makefilew.nt
prompt>make -f makefilew.mk
Wrapperサンプル・アプリケーションを実行するには、次の手順に従います。
2.
|
1つまたは複数のクライアント・アプリケーションを起動します。
|
Wrapperサンプル・アプリケーションでシステムおよびサンプル・アプリケーションのサーバー・プロセスを開始するには、次のコマンドを入力します。
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
Oracle TuxedoシステムのEventBroker。
NameManagerサービスやFactoryFinderサービスなどのトランザクション管理サービス。
ATMIアプリケーションTellerのアプリケーション・プロセス。
Billingサーバー・アプリケーション・プロセス。
ほかのサンプル・アプリケーションを使用するには、次のコマンドを入力して、システムおよびサンプル・アプリケーションのサーバー・プロセスを停止します。
CORBA C++クライアント・アプリケーションの起動
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーションを起動するには、次の手順に従います。
1.
|
MS-DOSプロンプトで次のコマンドを入力します。
|
2.
|
画面に 「Enter student id:」と表示されたら、100001 - 100010の任意の数値を入力します。
|
4.
|
画面に 「Enter domain password:」と表示されたら、 UBBCONFIGファイルをロードしたときに定義したパスワードを入力します。
|
Wrapperサンプル・アプリケーションのクライアント・アプリケーションの使用方法
以降の項では、Wrapperサンプル・アプリケーションのクライアント・アプリケーションの使用方法について説明します。
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーションには、次の追加オプションがあります。
Display Your Balanceオプションを使用すると、CORBA C++クライアント・アプリケーションのログオンに使用する学生IDに関連付けられた口座残高が表示されます。
C++ CORBAクライアント・アプリケーションを終了するには、Optionsプロンプトで
「E」を入力します。