目次 前 次 PDF


Wrapperサンプル・アプリケーション

Wrapperサンプル・アプリケーション
ここでは、次の内容について説明します。
注意:
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サンプル・アプリケーションでは、クラスに登録した学生の口座にクラスの代金が請求され、その口座残高が更新されます。また、学生は自身の口座残高を照会できます。
Wrapperサンプル・アプリケーションでは、ATMIサービスを使用します。Billingサーバー・アプリケーションには、Tellerオブジェクトがあり、ATMIアプリケーションのTellerを呼び出します。Tellerアプリケーションは、次の課金用のオペレーションを実行します。
クラスの代金を学生の口座の振替元に記入
クラスの代金を学生の口座の振替先に記入
学生の現在の口座残高を照会
Universityデータベースは、口座情報を含めるために変更されます。
図6-1に、Wrapperサンプル・アプリケーションのしくみを示します。
図6-1 Wrapperサンプル・アプリケーション
 
Wrapperサンプル・アプリケーションの開発プロセス
ここでは、CORBAアプリケーションでATMIサービスをラッピングする際に必要な開発プロセスについて説明します。次の手順は、第3章「Basicサンプル・アプリケーション」で概説した開発手順の追加手順です。
注意:
この項に記載されている手順はすでに完了しており、Wrapperサンプル・アプリケーションに組み込まれています。
OMG IDL
ATMIサービスをラッピングする際は、ATMIサービスと相互運用するオブジェクト、およびそのオブジェクトを作成するファクトリを定義する必要があります。Wrapperサンプル・アプリケーションの場合、TellerおよびTellerFactoryオブジェクトがATMIサービスと情報をやりとりします。開発プロセスでは、Object Management Group (OMG)インタフェース定義言語(IDL)でTellerおよびTellerFactoryオブジェクトのインタフェースを次のように定義します。
 
オブジェクト
説明
操作
TellerFactory
Tellerオブジェクトへのオブジェクト参照を返します。
find_teller()
Teller
ATMIアプリケーションと相互運用して、課金用のオペレーションを実行します。
get_balance()
credit()
debit()
BalanceフィールドをStudentDetails構造体に追加する必要があります。クライアント・アプリケーションでは、Balanceフィールドを使用して学生の口座残高を示します。さらに、ユーザー例外DelinquentAccountも追加します。
クライアント・アプリケーション
開発プロセスでは、クライアント・アプリケーションにコードを追加して、register_for_courses()オペレーションによって生成されるユーザー例外Delinquent Accountを処理します。
サーバー・アプリケーション
開発プロセスでは、Billingサーバー・アプリケーションに次を記述します。
Tellerオブジェクトのget_balance()credit()、およびdebit()オペレーションのメソッド実装。これらのメソッド実装には、次の処理を行うコードを含める必要があります。
FMLメッセージ・バッファを割り当てます。
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ファイルに次の変更を加える必要があります。
UBBCONFIGファイルのGROUPSセクションで次のサーバー・グループを定義します。
ORA_GRP。これには、Universityサーバー・アプリケーション、Tellerアプリケーション、およびUniversityデータベースのサーバー・アプリケーションが含まれます。このサーバー・グループによって、Universityサーバー・アプリケーションとTellerアプリケーションの両方からUniversityデータベースへのアクセスが可能になります。
APP_GRP。これには、Billingサーバー・アプリケーションが含まれます。
Wrapperサンプル・アプリケーションのサーバー・アプリケーションを指定する。サーバー・アプリケーションは、UBBCONFIGファイルのSERVERSセクションの順序で起動します。サーバー・アプリケーションの起動順序は次のとおりです。
a.
ATMIアプリケーションTeller
b.
Billingサーバー・アプリケーション
c.
Universityサーバー・アプリケーション
ICFファイル
開発プロセスでは、TellerおよびTellerFactoryオブジェクトのアクティブ化ポリシーとトランザクション・ポリシーを定義する必要があります。TellerおよびTellerFactoryオブジェクトの各ポリシーは次のように設定します。
Tellerオブジェクトのアクティブ化ポリシーはprocessに、トランザクション・ポリシーはoptionalに設定します。
TellerFactoryオブジェクトのアクティブ化ポリシーはprocessに、トランザクション・ポリシーはignoreに設定します。
CORBAオブジェクトのアクティブ化ポリシーとトランザクション・ポリシーの定義については、『CORBAサーバー・アプリケーションの作成』を参照してください。
Wrapperサンプル・アプリケーションのビルド
Wrapperサンプル・アプリケーションをビルドするには、次の手順に従います。
1.
Wrapperサンプル・アプリケーションのファイルをコピーします。
2.
Wrapperサンプル・アプリケーションのファイルの保護を変更します。
3.
環境変数を設定します。
4.
Universityデータベースを初期化します。
5.
UBBCONFIGファイルをロードします。
6.
トランザクション・ログを作成します。
7.
クライアントおよびサーバー・サンプル・アプリケーションをビルドします。
次の項では、前述の各手順について説明します。
注意:
Wrapperサンプル・アプリケーションをビルドまたは実行する前に、第2章「環境設定」の手順を実行しておく必要があります。
Wrapperサンプル・アプリケーションのファイルを作業ディレクトリにコピーする
Wrapperサンプル・アプリケーションの各ファイルは、次のディレクトリにあります。
Windows
drive:\TUXDIR\samples\corba\university\wrapper
UNIX
/usr/TUXDIR/samples/corba/university/wrapper
また、utilsディレクトリを作業ディレクトリにコピーする必要があります。utilsディレクトリには、Universityデータベースのログ、トレースおよびアクセスを設定するファイルが格納されています。
Wrapperサンプル・アプリケーションを作成するには、表6-1に示すファイルを使用します。
 
表6-1 Wrapperサンプル・アプリケーションに含まれるファイル
ファイル
説明
billw.idl
TellerおよびTellerFactoryインタフェースを宣言するOMG IDL。
univw.idl
CourseSynopsisEnumeratorRegistrar、およびRegistrarFactoryインタフェースを宣言するOMG IDL。
billws.cpp
Wrapperサンプル・アプリケーションのBillingサーバー・アプリケーション用C++ソース・コード。
univws.cpp
Wrapperサンプル・アプリケーションのUniversityサーバー・アプリケーション用C++ソース・コード。
billw__i.h
billw_i.cpp
TellerおよびTellerFactoryインタフェースのメソッド実装用C++ソース・コード。
univw_i.h
univw_i.cpp
CourseSynopsisEnumeratorRegistrar、およびRegistrarFactoryインタフェースのメソッド実装用C++ソース・コード。
univwc.cpp
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーション用C++ソース・コード。
univw_utils.h
univw_utils.cpp
CORBA C++クライアント・アプリケーションのデータベース・アクセス関数を定義するファイル。
univw.icf
Wrapperサンプル・アプリケーションのUniversityサーバー・アプリケーション用ICFファイル。
billw.icf
Wrapperサンプル・アプリケーションのBillingサーバー・アプリケーション用ICFファイル。
setenvw.sh
Wrapperサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するUNIXスクリプト。
tellw_flds、tellw_u.c、tellw_c.h、tellws.ec
ATMIアプリケーションTellerのファイル。
setenvw.cmd
Wrapperサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するMS-DOSコマンド。
ubb_w.mk
UNIXオペレーティング・システム用のUBBCONFIGファイル。
ubb_w.nt
Windowsオペレーティング・システム用のUBBCONFIGファイル。
makefilew.mk
UNIXオペレーティング・システムでのWrapperサンプル・アプリケーション用のmakefile
makefilew.nt
Windowsオペレーティング・システムでのWrapperサンプル・アプリケーション用のmakefile
log.cpplog.hlog_client.cpplog_server.cpp
サンプル・アプリケーションにログ機能とトレース機能を提供するクライアント・アプリケーションとサーバー・アプリケーションのファイル。これらのファイルは、\utilsディレクトリにあります。
oradbconn.cppおよびoranoconn.cpp
Oracle SQLデータベース・インスタンスへのアクセスを提供するファイル。これらのファイルは、\utilsディレクトリにあります。
samplesdb.cppおよびsamplesdb.h
サンプル・アプリケーションでのデータベース例外に出力関数を提供するファイル。これらのファイルは、\utilsディレクトリにあります。
unique_id.cppunique_id.h
サンプル・アプリケーションのC++ Unique IDクラスのルーチン。これらのファイルは、\utilsディレクトリにあります。
samplesdbsql.hおよびsamplesdbsql.pc
SQLデータベースへのアクセスを実装するC++クラスのメソッド。これらのファイルは、\utilsディレクトリにあります。
university.sql
Universityデータベース用のSQL。このファイルは、\utilsディレクトリにあります。
Wrapperサンプル・アプリケーションのファイル保護の属性を変更する
Oracle Tuxedoソフトウェアのインストール時には、サンプル・アプリケーションは読取り専用に設定されています。Wrapperサンプル・アプリケーションのファイルを編集または作成するには、次のように作業ディレクトリにコピーしたファイル保護の属性を変更する必要があります。
Windows
prompt>attrib -r drive:\workdirectory\*.*
UNIX
prompt>chmod u+rw /workdirectory/*.*
環境変数を設定する
次のコマンドを使用して、Wrapperサンプル・アプリケーションのクライアント・アプリケーションとサーバー・アプリケーションのビルドに使用する環境変数を設定します。
Windows
prompt>setenvw
UNIX
prompt>/bin/ksh
prompt>. ./setenvw.sh
Universityデータベースを初期化する
次のコマンドを使用して、Wrapperサンプル・アプリケーションで使用するUniversityデータベースを初期化します。
Windows
prompt>nmake -f makefilew.nt initdb
UNIX
prompt>make -f makefilew.mk initdb
UBBCONFIGファイルをロードする
次のコマンドを使用して、UBBCONFIGファイルをロードします。
Windows
prompt>tmloadcf -y ubb_w.nt
UNIX
prompt>tmloadcf -y ubb_w.mk
UBBCONFIGファイルの作成プロセスでは、アプリケーション・パスワードの入力が求められます。このパスワードは、クライアント・アプリケーションへのログオンに使用されます。パスワードを入力してEnterキーを押します。その際、パスワードを再入力してパスワードの確認を求めるメッセージが表示されます。
トランザクション・ログを作成する
トランザクション・ログには、CORBAアプリケーションでのトランザクション処理が記録されます。開発プロセスでは、UBBCONFIGファイルのTLOGDEVICEパラメータで指定したトランザクション・ログの場所を定義する必要があります。Wrapperサンプル・アプリケーションの場合、トランザクション・ログは作業ディレクトリに格納されています。
Wrapperサンプル・アプリケーションのトランザクション・ログを開くには、次の手順に従います。
1.
次のコマンドを入力して、会話型の管理インタフェースを起動します。
tmadmin
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++クライアント・アプリケーションとサーバー・アプリケーションをビルドするには、次のコマンドを使用します。
Windows
prompt>nmake -f makefilew.nt
UNIX
prompt>make -f makefilew.mk
Wrapperサンプル・アプリケーションの実行
Wrapperサンプル・アプリケーションを実行するには、次の手順に従います。
1.
サーバー・アプリケーションを起動します。
2.
1つまたは複数のクライアント・アプリケーションを起動します。
前述の手順については、次の項を参照してください。
サーバー・アプリケーションの起動
Wrapperサンプル・アプリケーションでシステムおよびサンプル・アプリケーションのサーバー・プロセスを開始するには、次のコマンドを入力します。
prompt>tmboot -y
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
TMSYSEVT
Oracle TuxedoシステムのEventBroker。
TMFFNAME
NameManagerサービスやFactoryFinderサービスなどのトランザクション管理サービス。
TMIFSRVR
インタフェース・リポジトリ・サーバー・プロセス。
univw_server
Universityサーバー・プロセス。
tellw_server
ATMIアプリケーションTellerのアプリケーション・プロセス。
billw_server
Billingサーバー・アプリケーション・プロセス。
ISL
IIOPリスナー/ハンドラ・プロセス。
ほかのサンプル・アプリケーションを使用するには、次のコマンドを入力して、システムおよびサンプル・アプリケーションのサーバー・プロセスを停止します。
prompt>tmshutdown
CORBA C++クライアント・アプリケーションの起動
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーションを起動するには、次の手順に従います。
1.
MS-DOSプロンプトで次のコマンドを入力します。
prompt>univw_client
2.
画面に「Enter student id:」と表示されたら、100001 - 100010の任意の数値を入力します。
3.
[Enter]を押します。
4.
画面に「Enter domain password:」と表示されたら、UBBCONFIGファイルをロードしたときに定義したパスワードを入力します。
5.
[Enter]を押します。
Wrapperサンプル・アプリケーションのクライアント・アプリケーションの使用方法
以降の項では、Wrapperサンプル・アプリケーションのクライアント・アプリケーションの使用方法について説明します。
CORBA C++クライアント・アプリケーション
Wrapperサンプル・アプリケーションのCORBA C++クライアント・アプリケーションには、次の追加オプションがあります。
<B> Display Your Balance
Display Your Balanceオプションを使用すると、CORBA C++クライアント・アプリケーションのログオンに使用する学生IDに関連付けられた口座残高が表示されます。
C++ CORBAクライアント・アプリケーションを終了するには、Optionsプロンプトで「E」を入力します。

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved