A サンプル・アプリケーション
このトピックには、次の項があります。
A.1 概要
ここでは、1つのクライアントと1つのサーバー、およびOracle Tuxedo /Qを使用するアプリケーションqsampleについて説明します。このソフトウェア(対話形式)は、Oracle Tuxedoソフトウェアに同梱されています。
親トピック: サンプル・アプリケーション
A.2 前提条件
このサンプル・アプリケーションを実行するには、Oracle Tuxedoソフトウェアがインストールされてビルドされ、ここで説明するファイルやコマンドを使用できることが必要です。Oracle Tuxedoソフトウェアをインストールする必要がある場合、そのインストール方法については『Oracle Tuxedoシステムのインストール』を参照してください。すでにインストールされている場合は、ソフトウェアのインストール先のルート・ディレクトリのパス名を確認する必要があります。また、Oracle Tuxedoディレクトリ構造内のディレクトリとファイルに読取りパーミッションと実行パーミッションを設定し、qsampleの各ファイルをコピーしたり、Oracle Tuxedoの各コマンドを実行できるようにします。
親トピック: サンプル・アプリケーション
A.3 qsampleとは
qsampleは、Oracle Tuxedo /Qを使用する基本的なOracle Tuxedoアプリケーションです。1つのアプリケーション・クライアントおよびサーバーがあり、2つのシステム・サーバーを使用します。TMQUEUE(5)およびTMQFORWARD(5)。クライアントは、TMQUEUEを呼び出して、qsample用に作成されたキュー・スペースにメッセージを登録します。このメッセージは、TMQFORWARDによってキューから取り出され、アプリケーション・サーバーに渡されます。アプリケーション・サーバーは、文字列を小文字から大文字に変換し、TMQFORWARDに返します。TMQFORWARDは、応答メッセージをキューに登録します。その間に、クライアントはTMQUEUEを呼び出して、応答をキューから取り出します。応答を受信すると、クライアントはその応答をユーザーの画面に表示します。
親トピック: サンプル・アプリケーション
A.4 qsampleのビルド
以下は、qsampleアプリケーションをビルドして実行する手順です。
qsample用にディレクトリを作成し、そのディレクトリに移動(cd)します。
この作業は省略せずに行ってください。この作業を行うと、最初からあったmkdir qsampdircd qsampdirqsampleのファイルと、手順に従って作成したファイルを確認できるようになります。Cシェル(/bin/csh)を使用せずに、標準シェル(/bin/sh)またはKornシェルを使用してください。qsampleファイルをコピーします。
一部のファイルを編集し、それらを実行可能ファイルにすることができます。したがって、本ソフトウェアで提供されたオリジナルのファイルではなく、コピーしたファイルを用いて作業することをお薦めします。cp $TUXDIR/apps/qsample/*- ファイルを一覧表示します。
$ ls README client.c crlog crque makefile rmipc runsample server.c setenv ubb.sample $このアプリケーションを構成するファイルは、次のとおりです。-
README - アプリケーション、およびその構成と実行方法について記述したファイル
-
setenv - 環境変数を設定するスクリプト
-
crlog - TLOGファイルを作成するスクリプト
-
crque - このアプリケーション用のキュー・スペースおよびキューを定義するスクリプト
-
makefile - このアプリケーションの実行可能ファイルを作成するmakefile
-
client.c - クライアント・プログラムのソース・コード
-
server.c - サーバー・プログラムのソース・コード
-
ubb.sample - このアプリケーションに対するASCII形式の構成ファイル
-
runsample - このサンプル・アプリケーションのビルドと実行に必要なすべてのコマンドを呼び出すスクリプト
-
rmipc - キュー・スペースのためにIPCリソースを削除するスクリプト
-
setenvファイルを編集します。setenvファイルを開いて、TUXDIR値をOracle Tuxedoシステムのインストール先のルート・ディレクトリの絶対パス名に変更します。この値を編集するときに、山カッコ(<と>)を削除します。runsampleを実行します。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行によって、プログラムが正常に動作したことがわかります。
親トピック: サンプル・アプリケーション
A.5 理解を深めるために
runserverを使用してサンプル・アプリケーションのビルドと実行を行うほかに、このアプリケーションの各部分について理解することも有用です。このトピックのいくつかの項目を確認して試してください。アプリケーションに詳しくなるにつれ、さらに新しいことに気づくはずです。
- setenv:環境の設定
- makefile:アプリケーションの作成
- ubb.sample: ASCII構成ファイル
- crlog:トランザクション・ログの作成
- crque:キュー・スペースとキューの作成
- アプリケーションの起動、実行、および停止
- クリーン・アップ
親トピック: サンプル・アプリケーション
A.5.1 setenv: 環境の設定
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に必要ですか。
親トピック: 理解を深めるために
A.5.2 makefile: アプリケーションの作成
makefileは、サーバーおよびクライアントをビルドするために、それぞれbuildserver(1)およびbuildclient(1)を使用することに注意してください。これらのコマンドを個別に実行することも、またはmake機能を使用してアプリケーションを常に最新にしておくこともできます。
ここではmakefileについて説明していますが、クライアント・プログラムとサーバー・プログラムの.cファイルも参照しておくことをお薦めします。Oracle Tuxedo /Qと関連して特に重要なことは、tpenqueueおよびtpdequeueの呼出しです。qspaceおよびqname引数の値に特に注意してください。構成ファイルを確認すると、これらの値の設定元がわかります。
親トピック: 理解を深めるために
A.5.3 ubb.sample: ASCII構成ファイル
構成ファイルの中で、特に直接関係する3つのエントリとして、TMQUEUEサーバーのCLOPTパラメータ、TMQFORWARDサーバーのCLOPTパラメータ、および*GROUPSエントリのOPENINFOパラメータがあります。ここで取り上げたこれらの項目に注意してください:
# 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ファイルを作成するために使用されます。
親トピック: 理解を深めるために
A.5.4 crlog: トランザクション・ログの作成
crlogのスクリプトは、tmadmin(1)を呼び出して、TLOG用のデバイス・リスト・エントリを作成し、その後で構成で指定されているサイトのためのログを作成します。ただし、キュー機能のすべてのメッセージは、トランザクション内でキューに登録され、キューから取り出されるので、サーバーによって管理されるトランザクションを追跡するログが必要になります。
親トピック: 理解を深めるために
A.5.5 crque: キュー・スペースとキューの作成
crqueのスクリプトは、qmadmin(1)を呼び出して、このサンプル・アプリケーションで使用されるキュー・スペースおよびキューを作成します。キュー・スペースは、QSPACEという名前になることに注意してください。この名前は、構成ファイルのOPENINFOパラメータの最後の引数として指定される名前でもあります。STRINGおよびRPLYQという名前のキューが作成されます。このスクリプトのqspacecreate部分では、エラー・キューの名前が指定されています。ただし、このスクリプトには、そのキューを作成するqcreateコマンドは含まれていません。この部分は、必要に応じて後で変更します。
親トピック: 理解を深めるために
A.5.6 アプリケーションの起動、実行、および停止
TUXCONFIGをロードし、キュー・スペースおよびキューを作成したら、次のステップとして、アプリケーションを起動して実行します。アプリケーションを起動するには、次のコマンドを実行します。 tmboot -y -y オプションは、tmbootが起動前の確認用プロンプトを表示しないようにします。サンプル・アプリケーションを実行するには、単に次のコマンドを入力します。 client アプリケーションを停止するには、tmshutdownコマンドを使用します。
親トピック: 理解を深めるために
A.5.7 クリーン・アップ
runsampleスクリプトには、スクリプト実行前の環境に戻すためのコマンドが3つあります。make cleanコマンドでは、makeを使用して、クライアント用とサーバー用のオブジェクト・ファイルと実行可能ファイルを削除します。rmipcコマンドは、キュー・スペースのIPCリソースがtmshutdownを使用しても自動的に削除されないため、使用します。tmshutdownは、アプリケーションで使用されるOracle Tuxedo IPCリソースを削除します。rmipcを参照すると、rmipcがqmadminを呼び出し、qmadminのipcrmコマンドを使用していることがわかります。その場合、QSPACEを指定して削除するリソースが識別されています。このスクリプトの最後のコマンドは、rmコマンドです。このコマンドは、アプリケーションで生成された数多くのファイルを削除します。これらのファイルが残っていても問題はありません。実際、このサンプル・アプリケーションで作業を続ける場合、tuxconfig、QUE、およびTLOGは再度作成しなくても済むように残しておくと便利です。
親トピック: 理解を深めるために