目次 前 次 PDF


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

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サンプル・アプリケーションは、次のように機能します。
1.
学生は登録するコースのリストを送信します。
2.
リスト内のコースごとに、Universityサーバー・アプリケーションは次の点をチェックします。
コースがデータベースにあるかどうか
学生がコースに登録済であるかどうか
学生が履修できる単位の最大数を超えているかどうか
3.
次のいずれかの処理が行われます。
すべての基準をコースが満たしている場合、Universityサーバー・アプリケーションはコースに学生を登録します。
コースがデータベースにない場合、または学生がコースに登録済の場合、Universityサーバー・アプリケーションは、その学生が未登録の登録コースのリストにコースを追加します。すべての登録リクエストが処理された後、サーバー・アプリケーションは登録に失敗したコースのリストを返します。その際、クライアント・アプリケーションから学生に、トランザクションをコミットして登録リクエストが成功したコースに学生を登録するか、またはトランザクションをロールバックしてすべてのコースの登録を行わないように求めるメッセージが表示されます。
学生が履修できる単位の最大数を超えている場合は、TooManyCreditsユーザー例外がUniversityサーバー・アプリケーションからクライアント・アプリケーションに返されます。続いて、クライアント・アプリケーションによって、リクエストが拒否されたという内容の簡単なメッセージが表示されます。その際、クライアント・アプリケーションはトランザクションをロールバックします。
図5-1に、Transactionsサンプル・アプリケーションのしくみを示します。
図5-1 Transactionsサンプル・アプリケーション
 
Transactionsサンプル・アプリケーションの開発プロセス
ここでは、Transactionsサンプル・アプリケーションにトランザクションを追加する手順について説明します。次の手順は、第3章「Basicサンプル・アプリケーション」で概説した開発手順の追加手順です。
注意:
この項に記載されている手順はすでに完了しており、Transactionsサンプル・アプリケーションに組み込まれています。
OMG IDL
開発プロセスでは、Object Management Group (OMG)インタフェース定義言語(IDL)でRegistrarregister_for_courses()オペレーションを定義します。register_for_courses()オペレーションには、NotRegisteredListパラメータがあり、登録に失敗したコースのリストをクライアント・アプリケーションに戻します。NotRegisteredListの値が空の場合、クライアント・アプリケーションはトランザクションをコミットします。
また、TooManyCreditsユーザー例外も定義する必要があります。
クライアント・アプリケーション
開発プロセスでは、クライアント・アプリケーションに次のコードを追加します。
指定したOracle TuxedoドメインのTransactionCurrent環境オブジェクトの参照を取得するためのBootstrap環境オブジェクト
トランザクションにCORBAオブジェクトを組み込むためのTransactionCurrent環境オブジェクトのオペレーション
学生がコースを登録できるようにするためのregister_for_courses()の呼出し
クライアント・アプリケーションでのトランザクションの使用については、『Oracle Tuxedo CORBAアプリケーション・スタート・ガイド』および『CORBAトランザクションの使用』を参照してください。
Universityサーバー・アプリケーション
開発プロセスでは、Universityサーバー・アプリケーションに次のコードを追加します。
ServerオブジェクトのServer::initialize()およびServer::release()オペレーションでの、TP::open_xa_rm()およびTP::close_xa_rm()オペレーションの呼出し
register_for_courses()オペレーションのメソッド実装
これらのタスクについては、『CORBAサーバー・アプリケーションの作成』を参照してください
UBBCONFIGファイル
開発プロセスでは、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アプリケーションの設定』を参照してください。
ICFファイル
開発プロセスでは、Registrarオブジェクトのトランザクション・ポリシーをoptionalからalwaysに変更します。alwaysトランザクション・ポリシーは、このオブジェクトが必ずトランザクションの一部であることを示します。CORBAオブジェクトのトランザクション・ポリシーの定義については、『CORBAトランザクションの使用』を参照してください。
Transactionsサンプル・アプリケーションのビルド
Transactionsサンプル・アプリケーションをビルドするには、次の手順に従います。
1.
Transactionsサンプル・アプリケーションのファイルをコピーします。
2.
Transactionsサンプル・アプリケーションのファイルの保護を変更します。
3.
環境変数を設定します。
4.
Universityデータベースを初期化します。
5.
UBBCONFIGファイルをロードします。
6.
トランザクション・ログを作成します。
7.
クライアントおよびサーバー・サンプル・アプリケーションをビルドします。
次の項では、前述の各手順について説明します。
注意:
Transactionsサンプル・アプリケーションをビルドまたは実行する前に、第2章「環境設定」の手順を実行しておく必要があります。
Transactionsサンプル・アプリケーションのファイルを作業ディレクトリにコピーする
Transactionsサンプル・アプリケーションの各ファイルは、次のディレクトリにあります。
Windows
drive:\TUXDIR\samples\corba\university\transaction
UNIX
/usr/TUXDIR/samples/corba/university/transaction
また、utilsディレクトリを作業ディレクトリにコピーする必要があります。utilsディレクトリには、Universityデータベースのログ、トレースおよびアクセスを設定するファイルが格納されています。
Transactionsサンプル・アプリケーションを作成するには、表5-1に示すファイルを使用します。
 
表5-1 Transactionsサンプル・アプリケーションに含まれるファイル
ファイル
説明
univt.idl
CourseSynopsisEnumeratorRegistrar、およびRegistrarFactoryインタフェースを宣言するOMG IDL。
univts.cpp
Transactionsサンプル・アプリケーションのUniversityサーバー・アプリケーション用C++ソース・コード。
univt_i.h
univt_i.cpp
CourseSynopsisEnumeratorRegistrar、およびRegistrarFactoryインタフェースのメソッド実装用C++ソース・コード。
univtc.cpp
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーション用C++ソース・コード。
univt_utils.h
univt_utils.cpp
CORBA C++クライアント・アプリケーションのデータベース・アクセス関数を定義するファイル。
univt.icf
Transactionsサンプル・アプリケーションのICFファイル。
setenvt.sh
Transactionsサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するUNIXスクリプト。
setenvt.cmd
Transactionsサンプル・アプリケーションのビルドおよび実行に必要な環境変数を設定するMS-DOSコマンド。
ubb_t.mk
UNIXオペレーティング・システム用のUBBCONFIGファイル。
ubb_t.nt
Windowsオペレーティング・システム用のUBBCONFIGファイル。
makefilet.mk
UNIXオペレーティング・システムでのTransactionsサンプル・アプリケーション用のmakefile
makefilet.nt
Windowsオペレーティング・システムでのTransactionsサンプル・アプリケーション用の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ディレクトリにあります。
Transactionsサンプル・アプリケーションのファイル保護の属性を変更する
Oracle Tuxedoソフトウェアのインストール時には、サンプル・アプリケーションは読取り専用に設定されています。Transactionsサンプル・アプリケーションのファイルを編集または作成するには、次のように作業ディレクトリにコピーしたファイル保護の属性を変更する必要があります。
Windows
prompt>attrib -r drive:\workdirectory\*.*
UNIX
prompt>chmod u+rw /workdirectory/*.*
環境変数を設定する
次のコマンドを使用して、Transactionsサンプル・アプリケーションのクライアント・アプリケーションとサーバー・アプリケーションのビルドに使用する環境変数を設定します。
Windows
prompt>setenvt
UNIX
prompt>/bin/ksh
prompt>. ./setenvt.sh
Universityデータベースを初期化する
次のコマンドを使用して、Transactionsサンプル・アプリケーションで使用するUniversityデータベースを初期化します。
Windows
prompt>nmake -f makefilet.nt initdb
UNIX
prompt>make -f makefilet.mk initdb
UBBCONFIGファイルをロードする
次のコマンドを使用して、UBBCONFIGファイルをロードします。
Windows
prompt>tmloadcf -y ubb_t.nt
UNIX
prompt>tmloadcf -y ubb_t.mk
UBBCONFIGファイルの作成プロセスでは、アプリケーション・パスワードの入力が求められます。このパスワードは、クライアント・アプリケーションへのログオンに使用されます。パスワードを入力してEnterキーを押します。その際、パスワードを再入力してパスワードの確認を求めるメッセージが表示されます。
トランザクション・ログを作成する
トランザクション・ログには、CORBAアプリケーションでのトランザクション処理が記録されます。開発プロセスでは、UBBCONFIGファイルのTLOGDEVICEパラメータで指定したトランザクション・ログの場所を定義する必要があります。Transactionsサンプル・アプリケーションの場合、トランザクション・ログは作業ディレクトリに格納されています。
Transactionsサンプル・アプリケーションのトランザクション・ログを開くには、次の手順に従います。
1.
次のコマンドを入力して、会話型の管理インタフェースを起動します。
tmadmin
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データベース用のトランザクション・マネージャが作成されます。
RM=Oracle_XA
Oracle以外のデータベースを使用する場合は、前述のパラメータを変更する必要があります。
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーションとサーバー・アプリケーションをビルドするには、次のコマンドを使用します。
Windows
prompt>nmake -f makefilet.nt
UNIX
prompt>make -f makefilet.mk
Transactionsサンプル・アプリケーションの実行
Transactionsサンプル・アプリケーションを実行するには、次の手順に従います。
1.
サーバー・アプリケーションを起動します。
2.
1つまたは複数のクライアント・アプリケーションを起動します。
前述の手順については、次の項を参照してください。
サーバー・アプリケーションの起動
Transactionsサンプル・アプリケーションでシステムおよびサンプル・アプリケーションのサーバー・アプリケーションを起動するには、次のコマンドを入力します。
prompt>tmboot -y
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
TMSYSEVT
Oracle TuxedoシステムのEventBroker。
TMFFNAME
NameManagerサービスやFactoryFinderサービスなどのトランザクション管理サービス。
TMIFSRVR
インタフェース・リポジトリ・サーバー・プロセス。
univt_server
Universityサーバー・プロセス。
ISL
IIOPリスナー/ハンドラ・プロセス。
ほかのサンプル・アプリケーションを使用するには、次のコマンドを入力して、システムおよびサンプル・アプリケーションのサーバー・プロセスを停止します。
prompt>tmshutdown
CORBA C++クライアント・アプリケーションの起動
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーションを起動するには、次の手順に従います。
1.
MS-DOSプロンプトで次のコマンドを入力します。
prompt>univt_client
2.
画面に「Enter student id:」と表示されたら、100001 - 100010の任意の数値を入力します。
3.
[Enter]を押します。
4.
画面に「Enter domain password:」と表示されたら、UBBCONFIGファイルをロードしたときに定義したパスワードを入力します。
5.
[Enter]を押します。
Transactionsサンプル・アプリケーションのクライアント・アプリケーションの使用方法
以降の項では、Transactionsサンプル・アプリケーションのクライアント・アプリケーションの使用方法について簡単に説明します。
CORBA C++クライアント・アプリケーション
Transactionsサンプル・アプリケーションのCORBA C++クライアント・アプリケーションには、次の追加オプションがあります。
<R> Register for Courses
コースに登録するには、次の手順に従います。
1.
Optionsプロンプトで「R」を入力します。
2.
画面に「Course Number」と表示されたら、コース番号とその後に続けて「-1」を入力します。例:
100011
100039
-1
3.
[Enter]を押します。
4.
Optionsプロンプトで「L」を入力すると、学生IDが登録されているコースを一覧表示できます。
C++ CORBAクライアント・アプリケーションを終了するには、Optionsプロンプトで「E」を入力します。

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