Transactionsサンプル・アプリケーション
注意:
|
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に関する技術的なサポートまたはドキュメントは提供していません。
CORBAアプリケーションでのトランザクションの使用に関する詳細は、
『CORBAトランザクションの使用』を参照してください。
Transactionsサンプル・アプリケーションのしくみ
Transactionsサンプル・アプリケーションでは、学生はクラスの登録ができます。コースの登録は、トランザクションのスコープ内で実行されます。Transactionsサンプル・アプリケーションは、次のように機能します。
2.
|
リスト内のコースごとに、Universityサーバー・アプリケーションは次の点をチェックします。
|
•
|
すべての基準をコースが満たしている場合、Universityサーバー・アプリケーションはコースに学生を登録します。
|
•
|
コースがデータベースにない場合、または学生がコースに登録済の場合、Universityサーバー・アプリケーションは、その学生が未登録の登録コースのリストにコースを追加します。すべての登録リクエストが処理された後、サーバー・アプリケーションは登録に失敗したコースのリストを返します。その際、クライアント・アプリケーションから学生に、トランザクションをコミットして登録リクエストが成功したコースに学生を登録するか、またはトランザクションをロールバックしてすべてのコースの登録を行わないように求めるメッセージが表示されます。
|
•
|
学生が履修できる単位の最大数を超えている場合は、 TooManyCreditsユーザー例外がUniversityサーバー・アプリケーションからクライアント・アプリケーションに返されます。続いて、クライアント・アプリケーションによって、リクエストが拒否されたという内容の簡単なメッセージが表示されます。その際、クライアント・アプリケーションはトランザクションをロールバックします。
|
図5-1に、Transactionsサンプル・アプリケーションのしくみを示します。
Transactionsサンプル・アプリケーションの開発プロセス
注意:
|
この項に記載されている手順はすでに完了しており、Transactionsサンプル・アプリケーションに組み込まれています。
|
開発プロセスでは、Object Management Group (OMG)インタフェース定義言語(IDL)で
Registrarの
register_for_courses()オペレーションを定義します。
register_for_courses()オペレーションには、
NotRegisteredListパラメータがあり、登録に失敗したコースのリストをクライアント・アプリケーションに戻します。
NotRegisteredListの値が空の場合、クライアント・アプリケーションはトランザクションをコミットします。
また、
TooManyCreditsユーザー例外も定義する必要があります。
開発プロセスでは、クライアント・アプリケーションに次のコードを追加します。
•
|
指定したOracle TuxedoドメインのTransactionCurrent環境オブジェクトの参照を取得するためのBootstrap環境オブジェクト
|
•
|
トランザクションにCORBAオブジェクトを組み込むためのTransactionCurrent環境オブジェクトのオペレーション
|
•
|
学生がコースを登録できるようにするための register_for_courses()の呼出し
|
クライアント・アプリケーションでのトランザクションの使用については、
『Oracle Tuxedo CORBAアプリケーション・スタート・ガイド』および
『CORBAトランザクションの使用』を参照してください。
開発プロセスでは、Universityサーバー・アプリケーションに次のコードを追加します。
•
|
Serverオブジェクトの Server::initialize()および Server::release()オペレーションでの、 TP::open_xa_rm()および TP::close_xa_rm()オペレーションの呼出し
|
•
|
register_for_courses()オペレーションのメソッド実装
|
これらのタスクについては、
『CORBAサーバー・アプリケーションの作成』を参照してください
開発プロセスでは、
UBBCONFIGファイルで次のものが必要になります。
•
|
Universityサーバー・アプリケーションおよびデータベースを管理するサーバー・アプリケーションの両方を含んだサーバー・グループ。このサーバー・グループは、トランザクションとして指定する必要があります。
|
•
|
Oracleデータベースの XAパラメータに従って定義された OPENINFOパラメータ。Oracleデータベースの XA パラメータの説明については、 『Oracle7 Server Distributed Systems』の「Developing and Installing Applications that Use the XA Libraries」を参照してください。
|
注意:
|
Oracle以外のデータベースを使用する場合、XAパラメータの定義については製品のドキュメントを参照してください。
|
•
|
TLOGDEVICEパラメータでのトランザクション・ログ( TLOG)のパス名
|
トランザクション・ログおよび
UBBCONFIGファイルのパラメータの定義については、
『Oracle Tuxedoアプリケーションの設定』を参照してください。
開発プロセスでは、
Registrarオブジェクトのトランザクション・ポリシーを
optionalから
alwaysに変更します。
alwaysトランザクション・ポリシーは、このオブジェクトが必ずトランザクションの一部であることを示します。CORBAオブジェクトのトランザクション・ポリシーの定義については、
『CORBAトランザクションの使用』を参照してください。
Transactionsサンプル・アプリケーションのビルド
Transactionsサンプル・アプリケーションをビルドするには、次の手順に従います。
1.
|
Transactionsサンプル・アプリケーションのファイルをコピーします。
|
2.
|
Transactionsサンプル・アプリケーションのファイルの保護を変更します。
|
7.
|
クライアントおよびサーバー・サンプル・アプリケーションをビルドします。
|
注意:
|
Transactionsサンプル・アプリケーションをビルドまたは実行する前に、 第2章「環境設定」の手順を実行しておく必要があります。
|
Transactionsサンプル・アプリケーションのファイルを作業ディレクトリにコピーする
Transactionsサンプル・アプリケーションの各ファイルは、次のディレクトリにあります。
drive:\TUXDIR\samples\corba\university\
transaction
/usr/TUXDIR/samples/corba/university/
transaction
また、
utilsディレクトリを作業ディレクトリにコピーする必要があります。
utilsディレクトリには、Universityデータベースのログ、トレースおよびアクセスを設定するファイルが格納されています。
Transactionsサンプル・アプリケーションを作成するには、
表5-1に示すファイルを使用します。
表5-1
Transactionsサンプル・アプリケーションに含まれるファイル
|
|
|
CourseSynopsisEnumerator、 Registrar、および RegistrarFactoryインタフェースを宣言するOMG IDL。
|
|
Transactionsサンプル・アプリケーションのUniversityサーバー・アプリケーション用C++ソース・コード。
|
|
CourseSynopsisEnumerator、 Registrar、および RegistrarFactoryインタフェースのメソッド実装用C++ソース・コード。
|
|
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーション用C++ソース・コード。
|
univt_utils.h univt_utils.cpp
|
CORBA C++クライアント・アプリケーションのデータベース・アクセス関数を定義するファイル。
|
|
Transactionsサンプル・アプリケーションのICFファイル。
|
|
Transactionsサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するUNIXスクリプト。
|
|
Transactionsサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するMS-DOSコマンド。
|
|
UNIXオペレーティング・システム用の UBBCONFIGファイル。
|
|
Windowsオペレーティング・システム用の UBBCONFIGファイル。
|
|
UNIXオペレーティング・システムでのTransactionsサンプル・アプリケーション用の makefile。
|
|
Windowsオペレーティング・システムでのTransactionsサンプル・アプリケーション用の 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ディレクトリにあります。
|
Transactionsサンプル・アプリケーションのファイル保護の属性を変更する
Oracle Tuxedoソフトウェアのインストール時には、サンプル・アプリケーションは読取り専用に設定されています。Transactionsサンプル・アプリケーションのファイルを編集または作成するには、次のように作業ディレクトリにコピーしたファイル保護の属性を変更する必要があります。
prompt>attrib -r drive:\workdirectory\*.*
prompt>chmod u+rw /workdirectory/*.*
次のコマンドを使用して、Transactionsサンプル・アプリケーションのクライアント・アプリケーションとサーバー・アプリケーションのビルドに使用する環境変数を設定します。
次のコマンドを使用して、Transactionsサンプル・アプリケーションで使用するUniversityデータベースを初期化します。
prompt>nmake -f makefilet.nt initdb
prompt>make -f makefilet.mk initdb
次のコマンドを使用して、
UBBCONFIGファイルをロードします。
prompt>tmloadcf -y ubb_t.nt
prompt>tmloadcf -y ubb_t.mk
UBBCONFIGファイルの作成プロセスでは、アプリケーション・パスワードの入力が求められます。このパスワードは、クライアント・アプリケーションへのログオンに使用されます。パスワードを入力してEnterキーを押します。その際、パスワードを再入力してパスワードの確認を求めるメッセージが表示されます。
トランザクション・ログには、CORBAアプリケーションでのトランザクション処理が記録されます。開発プロセスでは、
UBBCONFIGファイルの
TLOGDEVICEパラメータで指定したトランザクション・ログの場所を定義する必要があります。Transactionsサンプル・アプリケーションの場合、トランザクション・ログは作業ディレクトリに格納されています。
Transactionsサンプル・アプリケーションのトランザクション・ログを開くには、次の手順に従います。
1.
|
次のコマンドを入力して、会話型の管理インタフェースを起動します。
|
2.
|
次のコマンドを入力して、トランザクション・ログを作成します。
|
crdl -b blocks -z directorypath
clog -m SITE1
blocksにトランザクション・ログに割り当てるブロック数を指定し、
directorypathにトランザクション・ログの場所を指定します。
directorypathオプションは、
UBBCONFIGファイルの
TLOGDEVICEパラメータで指定した場所と一致する必要があります。Windowsでのコマンドの例を次に示します。
crdl -b 500 -z c:\mysamples\university\Transaction\TLOG
3.
|
「q」を入力して、会話型の管理インタフェースを終了します。
|
Transactionsサンプル・アプリケーションのコンパイル
開発プロセスでは、
buildobjclientおよび
buildobjserverコマンドを使用して、クライアント・アプリケーションとサーバー・アプリケーションをビルドします。また、クライアント/サーバー・アプリケーションのトランザクション・イベントを調整するために、データベース固有のトランザクション・マネージャを作成します。ただし、Transactionsサンプル・アプリケーションの場合は、この手順は不要です。Transactionsサンプル・アプリケーションのディレクトリには、
makefileが格納されており、これによりクライアント/サーバー・サンプル・アプリケーションがビルドされ、TMS_ORAというトランザクション・マネージャが作成されます。
注意:
|
makefileでは、次のパラメータがハード・コードされ、Oracleデータベース用のトランザクション・マネージャが作成されます。
|
Oracle以外のデータベースを使用する場合は、前述のパラメータを変更する必要があります。
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーションとサーバー・アプリケーションをビルドするには、次のコマンドを使用します。
prompt>nmake -f makefilet.nt
prompt>make -f makefilet.mk
Transactionsサンプル・アプリケーションの実行
Transactionsサンプル・アプリケーションを実行するには、次の手順に従います。
2.
|
1つまたは複数のクライアント・アプリケーションを起動します。
|
Transactionsサンプル・アプリケーションでシステムおよびサンプル・アプリケーションのサーバー・アプリケーションを起動するには、次のコマンドを入力します。
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
Oracle TuxedoシステムのEventBroker。
NameManagerサービスやFactoryFinderサービスなどのトランザクション管理サービス。
ほかのサンプル・アプリケーションを使用するには、次のコマンドを入力して、システムおよびサンプル・アプリケーションのサーバー・プロセスを停止します。
CORBA C++クライアント・アプリケーションの起動
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーションを起動するには、次の手順に従います。
1.
|
MS-DOSプロンプトで次のコマンドを入力します。
|
2.
|
画面に 「Enter student id:」と表示されたら、100001 - 100010の任意の数値を入力します。
|
4.
|
画面に 「Enter domain password:」と表示されたら、 UBBCONFIGファイルをロードしたときに定義したパスワードを入力します。
|
Transactionsサンプル・アプリケーションのクライアント・アプリケーションの使用方法
以降の項では、Transactionsサンプル・アプリケーションのクライアント・アプリケーションの使用方法について簡単に説明します。
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーションには、次の追加オプションがあります。
2.
|
画面に 「Course Number」と表示されたら、コース番号とその後に続けて「-1」を入力します。例:
|
4.
|
Optionsプロンプトで 「L」を入力すると、学生IDが登録されているコースを一覧表示できます。
|
C++ CORBAクライアント・アプリケーションを終了するには、Optionsプロンプトで
「E」を入力します。