ここでは、1つのクライアントと1つのサーバー、およびOracle Tuxedo /Qを使用するアプリケーション
qsampleについて説明します。このソフトウェア(対話形式)は、Oracle Tuxedoソフトウェアに同梱されています。
このサンプル・アプリケーションを実行するには、Oracle Tuxedoソフトウェアがインストールされてビルドされ、ここで説明するファイルやコマンドを使用できることが必要です。Oracle Tuxedoソフトウェアをインストールする必要がある場合、そのインストール方法については『Oracle Tuxedoシステムのインストール』
を参照してください。
すでにインストールされている場合は、ソフトウェアのインストール先のルート・ディレクトリのパス名を確認する必要があります。また、Oracle Tuxedoディレクトリ構造内のディレクトリとファイルに読取りパーミッションと実行パーミッションを設定し、
qsampleの各ファイルをコピーしたり、Oracle Tuxedoの各コマンドを実行できるようにします。
qsampleは、Oracle Tuxedo /Qを使用する基本的なOracle Tuxedoアプリケーションです。1つのアプリケーション・クライアントおよびサーバーがあり、2つのシステム・サーバーを使用します。
TMQUEUE(5)および
TMQFORWARD(5)。クライアントは、
TMQUEUEを呼び出して、
qsample用に作成されたキュー・スペースにメッセージを登録します。このメッセージは、
TMQFORWARDによってキューから取り出され、アプリケーション・サーバーに渡されます。アプリケーション・サーバーは、文字列を小文字から大文字に変換し、
TMQFORWARDに返します。
TMQFORWARDは、応答メッセージをキューに登録します。その間に、クライアントは
TMQUEUEを呼び出して、応答をキューから取り出します。応答を受信すると、クライアントはその応答をユーザーの画面に表示します。
以下は、
qsampleアプリケーションをビルドして実行する手順です。
1.
|
qsample用にディレクトリを作成し、そのディレクトリに移動( cd)します。
|
mkdir qsampdir
cd qsampdir
この作業は省略せずに行ってください。この作業を行うと、最初からあった
qsampleのファイルと、手順に従って作成したファイルを確認できるようになります。Cシェル(
/bin/csh)を使用せずに、標準シェル(
/bin/sh)またはKornシェルを使用してください。
cp $TUXDIR/apps/qsample/* .
一部のファイルを編集してから、実行形式ファイルを作成することがあるので、本ソフトウェアで提供されたオリジナルのファイルではなく、コピーしたファイルを用いて作業することをお薦めします。
$ ls
README
client.c
crlog
crque
makefile
rmipc
runsample
server.c
setenv
ubb.sample
$
このアプリケーションを構成するファイルは、次のとおりです。
アプリケーション、およびその構成と実行方法について記述したファイル
このアプリケーション用のキュー・スペースおよびキューを定義するスクリプト
このアプリケーションの実行可能ファイルを作成するmakefile
このアプリケーションに対するASCII形式の構成ファイル
このサンプル・アプリケーションのビルドと実行に必要なすべてのコマンドを呼び出すスクリプト
キュー・スペースのためにIPCリソースを削除するスクリプト
setenvファイルを開いて、
TUXDIR値をOracle Tuxedoシステムのインストール先のルート・ディレクトリの絶対パス名に変更します。この値を編集するときに、山カッコ(
<と
>)を削除します。
runsampleスクリプトには、いくつかのコマンドが記述されています。各コマンドの前には、そのコマンドを説明するコメント行があります。
#set the environment
. ./setenv
chmod +w ubb.sample
uname="`uname -n`"
ed ubb.sample<<!
g;<uname -n>;s;;${uname};
g;<full path of Tuxedo software>;s;;${TUXDIR};
g;<full path of APPDIR>;s;;${APPDIR};
w
q
!
#build the client and server
make client server
#create the tuxconfig file
tmloadcf -y ubb.sample
#create the TLOG
./crlog
#create the QUE
./crque
#boot the application
tmboot -y
#run the client
client
#shutdown the application
tmshutdown -y
#remove the client and server
make clean
#remove the QUE ipc resources
./rmipc
#remove all files created
rm tuxconfig QUE stdout stderr TLOG ULOG*
このスクリプトを実行すると、各種のコマンドから生成される一連のメッセージが画面に表示されます。このメッセージの中に、次の行があります。
before: this is a q example
after: THIS IS A Q EXAMPLE
before:で始まる行は、
clientがキューに登録し、
serverで処理される文字列のコピーです。
after:で始まる行は、
serverから返された文字列です。この2行によって、プログラムが正常に動作したことがわかります。
runserverを使用してサンプル・アプリケーションのビルドと実行を行うほかに、このアプリケーションの各部分について理解することも有用です。ここでは、参照しておくと役立つ内容について説明します。このアプリケーションについて理解を深めると、ほかのアプリケーションも理解できるようになります。
setenvは、Oracle Tuxedoの開発でよく使用されるファイルの1つです。
TUXDIR、
APPDIR、および
PATHの3つの変数が設定されています。これらの変数は、Oracle Tuxedoシステムで作業しているときに常に必要になります。SUNマシンで実行する場合は、
PATH変数の先頭に別個に
binが必要になるので注意してください。
LD_LIBRARY_PATH、
SHLIB_PATH、または
LIBPATHは、共用ライブラリを使用してシステムをビルドする場合に重要です。使用する必要のある変数は、お使いのオペレーティング・システムに依存します。
TUXCONFIGは、システムを起動する前に設定しておく必要があります。
QMADMINは、変数で設定することも、
qmadmin(1)コマンド行で指定することもできます。
考慮する点: Oracle Tuxedo /Qの処理を実行するためにファイルの使用を計画する必要がありますか。ログイン時に環境を設定するコマンドが
.profileに必要ですか。
makefileは、サーバーおよびクライアントをビルドするために、それぞれ
buildserver(1)および
buildclient(1)を使用することに注意してください。これらのコマンドを個別に実行することも、または
make機能を使用してアプリケーションを常に最新にしておくこともできます。
ここでは
makefileについて説明していますが、クライアント・プログラムとサーバー・プログラムの
.cファイルも参照しておくことをお薦めします。Oracle Tuxedo /Qと関連して特に重要なことは、
tpenqueueおよび
tpdequeueの呼出しです。
qspaceおよび
qname引数の値に特に注意してください。構成ファイルを確認すると、これらの値の設定元がわかります。
構成ファイルの中で、特に直接関係する3つのエントリとして、
TMQUEUEサーバーの
CLOPTパラメータ、
TMQFORWARDサーバーのCLOPTパラメータ、および*
GROUPSエントリの
OPENINFOパラメータがあります。次のコードは、この3つを抽出したものです。
# First the CLOPT parameter from TMQUEUE:
CLOPT = "-s QSPACENAME:TMQUEUE -- "
# Then the CLOPT parameter from TMQFORWARD:
CLOPT="-- -i 2 -q STRING"
# Finally, the OPENINFO parameter from the QUE1 group:
OPENINFO = "TUXEDO/QM:<APPDIR pathname>/QUE:QSPACE"
TMQUEUEの
CLOPTパラメータは、サービスの別名として
QSPACENAMEを指定しています。再度
client.cを参照して、
tpenqueueおよび
tpdequeueの
qspace引数を確認してください。
TMQFORWARDの
CLOPTパラメータは、
-qオプションを使用して
STRINGサービスを指定しています。これもそのサービス用にメッセージが登録されるキューに指定された名前であり、
client.cにある
tpenqueueの
qname引数として指定されています。
tmloadcf(1)コマンドは、ASCII形式の構成ファイルをコンパイルして
TUXCONFIGファイルを作成するために使用されます。
crlogのスクリプトは、
tmadmin(1)を呼び出して、
TLOG用のデバイス・リスト・エントリを作成し、その後で構成で指定されているサイトのためのログを作成します。キュー式メッセージ機能のすべてのメッセージは、トランザクション内でキューに登録され、キューから取り出されるので、
TMS_QMサーバーによって管理されるトランザクションを追跡するログが必要になります。
crqueのスクリプトは、
qmadmin(1)を呼び出して、このサンプル・アプリケーションで使用されるキュー・スペースおよびキューを作成します。キュー・スペースは、
QSPACEという名前になることに注意してください。この名前は、構成ファイルの
OPENINFOパラメータの最後の引数として指定される名前でもあります。
STRINGおよび
RPLYQという名前のキューが作成されます。このスクリプトの
qspacecreate部分では、エラー・キューの名前が指定されています。ただし、このスクリプトには、そのキューを作成する
qcreateコマンドは含まれていません。この部分は、必要に応じて後で変更します。
アプリケーション・プログラムを作成し、
TUXCONFIGをロードし、キュー・スペースおよびキューを作成したら、次にアプリケーションを起動して実行します。アプリケーションを起動するには、次のコマンドを実行します。
-yオプションは、
tmbootが起動前の確認用プロンプトを表示しないようにします。
サンプル・アプリケーションを実行するには、単に次のコマンドを入力します。
アプリケーションを停止するには、
tmshutdownコマンドを使用します。
runsampleスクリプトには、スクリプト実行前の環境に戻すためのコマンドが3つあります。
make cleanコマンドでは、
makeを使用して、クライアント用とサーバー用のオブジェクト・ファイルと実行可能ファイルを削除します。
rmipcコマンドは、キュー・スペースのIPCリソースが
tmshutdownを使用しても自動的に削除されないため、使用します。tmshutdownは、アプリケーションで使用されるOracle Tuxedo IPCリソースを削除します。
rmipcを参照すると、rmipcが
qmadminを呼び出し、qmadminの
ipcrmコマンドを使用していることがわかります。その場合、
QSPACEを指定して削除するリソースが識別されています。
このスクリプトの最後のコマンドは、
rmコマンドです。このコマンドは、アプリケーションで生成された数多くのファイルを削除します。これらのファイルが残っていても問題はありません。実際、このサンプル・アプリケーションで作業を続ける場合、
tuxconfig、
QUE、および
TLOGは再度作成しなくても済むように残しておくと便利です。