|
ここでは、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 つのクライアントと 1 つのサーバ、および 2 つのシステム サーバ TMQUEUE(5) と TMQFORWARD(5) を使用します。クライアントは、TMQUEUE を呼び出して、qsample 用に作成されたキュー スペースにメッセージを登録します。このメッセージは、TMQFORWARD によってキューから取り出され、アプリケーション サーバに渡されます。アプリケーション サーバは、文字列を小文字から大文字に変換し、TMQFORWARD に返します。TMQFORWARD は、応答メッセージをキューに登録します。その間に、クライアントは TMQUEUE を呼び出して、応答をキューから取り出します。応答を受信すると、クライアントはその応答をユーザの画面に表示します。
以下は、qsample アプリケーションをビルドして実行する手順です。
qsample 用にディレクトリを作成し、そのディレクトリに移動 (cd) します。mkdir qsampdir
cd qsampdir
この作業は省略せずに行ってください。この作業を行うと、最初からあった qsample のファイルと、手順に従って作成したファイルを確認できるようになります。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
$
setenv ファイルを編集します。
setenv ファイルを開いて、TUXDIR 値を Oracle Tuxedo システムのインストール先のルート ディレクトリの絶対パス名に変更します。この値を編集するときに、山かっこ (< と >) を削除します。
runsample を実行します。
runsample スクリプトには、いくつかのコマンドが記述されています。各コマンドの前には、そのコマンドを説明するコメント行があります。
# 環境変数を設定します。
. ./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
!
# クライアントとサーバをビルドします。
make client server
# tuxconfig ファイルを作成します。
tmloadcf -y ubb.sample
# TLOG を作成します。
./crlog
# QUE を作成します。
./crque
# アプリケーションを起動します。
tmboot -y
# クライアントを実行します。
client
# アプリケーションを停止します。
tmshutdown -y
# クライアントとサーバを削除します。
make clean
# QUE IPC リソースを削除します。
./rmipc
# 作成されたすべてのファイルを削除します。
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 つを抽出したものです。
# まず、TMQUEUE からの CLOPT パラメータ
CLOPT = "-s QSPACENAME:TMQUEUE -- "
# 次に、TMQFORWARD からの CLOPT パラメータ
CLOPT="-- -i 2 -q STRING"
# 最後に、QUE1 グループからの OPENINFO パラメータ
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 をロードし、キュー スペースおよびキューを作成したら、次にアプリケーションを起動して実行します。アプリケーションを起動するには、次のコマンドを実行します。
tmboot -y
-y オプションは、tmboot が起動前の確認用プロンプトを表示しないようにします。
サンプル アプリケーションを実行するには、単に次のコマンドを入力します。
client
アプリケーションを停止するには、tmshutdown コマンドを使用します。
runsample スクリプトには、スクリプト実行前の環境に戻すためのコマンドが 3 つあります。make clean コマンドでは、make を使用して、クライアント用とサーバ用のオブジェクト ファイルと実行可能ファイルを削除します。
rmipc コマンドは、キュー スペースの IPC リソースが tmshutdown を使用しても自動的に削除されないため、使用します。tmshutdown は、アプリケーションで使用される Oracle Tuxedo IPC リソースを削除します。rmipc を参照すると、rmipc が qmadmin を呼び出し、qmadmin の ipcrm コマンドを使用していることがわかります。その場合、QSPACE を指定して削除するリソースが識別されています。
このスクリプトの最後のコマンドは、rm コマンドです。このコマンドは、アプリケーションで生成された数多くのファイルを削除します。これらのファイルが残っていても問題はありません。実際、このサンプル アプリケーションで作業を続ける場合、tuxconfig、QUE、および TLOG は再度作成しなくても済むように残しておくと便利です。
|