Tuxedo /Q コンポーネント

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

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

ここでは、以下の内容について説明します。

 


概要

ここでは、1 つのクライアントと 1 つのサーバ、および Oracle Tuxedo /Q を使用するアプリケーション qsample について説明します。このソフトウェア (対話形式) は、Oracle Tuxedo ソフトウェアに同梱されています。

 


前提条件

このサンプル アプリケーションを実行するには、Oracle Tuxedo ソフトウェアがインストールされてビルドされ、ここで説明するファイルやコマンドを使用できることが必要です。Oracle Tuxedo ソフトウェアをインストールする必要がある場合、そのインストール方法については『Oracle Tuxedo システムのインストール』を参照してください。

既にインストールされている場合は、ソフトウェアのインストール先のルート ディレクトリのパス名を確認する必要があります。また、Oracle Tuxedo ディレクトリ構造内のディレクトリとファイルに読み取りパーミッションと実行パーミッションを設定し、qsample の各ファイルをコピーしたり、Oracle Tuxedo の各コマンドを実行できるようにします。

 


qsample とは

qsample は、Oracle Tuxedo /Q を使用する基本的な Oracle Tuxedo アプリケーションです。このアプリケーションは、1 つのクライアントと 1 つのサーバ、および 2 つのシステム サーバ TMQUEUE(5)TMQFORWARD(5) を使用します。クライアントは、TMQUEUE を呼び出して、qsample 用に作成されたキュー スペースにメッセージを登録します。このメッセージは、TMQFORWARD によってキューから取り出され、アプリケーション サーバに渡されます。アプリケーション サーバは、文字列を小文字から大文字に変換し、TMQFORWARD に返します。TMQFORWARD は、応答メッセージをキューに登録します。その間に、クライアントは TMQUEUE を呼び出して、応答をキューから取り出します。応答を受信すると、クライアントはその応答をユーザの画面に表示します。

 


qsample のビルド

以下は、qsample アプリケーションをビルドして実行する手順です。

  1. qsample 用にディレクトリを作成し、そのディレクトリに移動 (cd) します。
  2. mkdir qsampdir
    cd qsampdir

    この作業は省略せずに行ってください。この作業を行うと、最初からあった qsample のファイルと、手順に従って作成したファイルを確認できるようになります。C シェル (/bin/csh) を使用せずに、標準シェル (/bin/sh) または Korn シェルを使用してください。

  3. qsample ファイルをコピーします。
  4. cp $TUXDIR/apps/qsample/* .

    一部のファイルを編集してから、実行形式ファイルを作成することがあるので、本ソフトウェアで提供されたオリジナルのファイルではなく、コピーしたファイルを用いて作業することをお勧めします。

  5. ファイルを一覧表示します。
  6. $ 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 リソースを削除するスクリプト
  1. setenv ファイルを編集します。
  2. setenv ファイルを開いて、TUXDIR 値を Oracle Tuxedo システムのインストール先のルート ディレクトリの絶対パス名に変更します。この値を編集するときに、山かっこ (<>) を削除します。

  3. runsample を実行します。
  4. 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: 環境の設定

setenv は、Oracle Tuxedo の開発でよく使用されるファイルの 1 つです。TUXDIRAPPDIR、および PATH の 3 つの変数が設定されています。これらの変数は、Oracle Tuxedo システムで作業しているときに常に必要になります。SUN マシンで実行する場合は、PATH 変数の先頭に別個に bin が必要になるので注意してください。LD_LIBRARY_PATHSHLIB_PATH、または LIBPATH は、共用ライブラリを使用してシステムをビルドする場合に重要です。使用する必要のある変数は、お使いのオペレーティング システムに依存します。TUXCONFIG は、システムを起動する前に設定しておく必要があります。QMADMIN は、変数で設定することも、qmadmin(1) コマンドラインで指定することもできます。

考慮すべき点は、Oracle Tuxedo /Q の作業環境にこのようなファイルが必要とされるかどうか、また、自分の .profile にコマンドを記述して、ログイン時に環境設定を行うかどうかです。

makefile: アプリケーションの作成

makefile は、サーバおよびクライアントをビルドするために、それぞれ buildserver(1) および buildclient(1) を使用することに注意してください。これらのコマンドを個別に実行することも、または make 機能を使用してアプリケーションを常に最新にしておくこともできます。

ここでは makefile について説明していますが、クライアント プログラムとサーバ プログラムの .c ファイルも参照しておくことをお勧めします。Oracle Tuxedo /Q と関連して特に重要なことは、tpenqueue および tpdequeue の呼び出しです。qspace および qname 引数の値に特に注意してください。コンフィグレーション ファイルを確認すると、これらの値の設定元がわかります。

ubb.sample: ASCII コンフィグレーション ファイル

コンフィグレーション ファイルの中で、特に直接関係する 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"

TMQUEUECLOPT パラメータは、サービスのエリアスとして QSPACENAME を指定しています。再度 client.c を参照して、tpenqueue および tpdequeueqspace 引数を確認してください。TMQFORWARDCLOPT パラメータは、-q オプションを使用して STRING サービスを指定しています。これもそのサービス用にメッセージが登録されるキューに指定された名前であり、client.c にある tpenqueueqname 引数として指定されています。

tmloadcf(1) コマンドは、ASCII 形式のコンフィグレーション ファイルをコンパイルして TUXCONFIG ファイルを作成するために使用されます。

crlog: トランザクション ログの作成

crlog のスクリプトは、tmadmin(1) を呼び出して、TLOG 用のデバイス リスト エントリを作成し、その後でコンフィグレーションで指定されているサイトのためのログを作成します。キュー機能のすべてのメッセージは、トランザクション内でキューに登録され、キューから取り出されるので、TMS_QM サーバによって管理されるトランザクションを追跡するログが必要になります。

crque: キュー スペースとキューの作成

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 コマンドです。このコマンドは、アプリケーションで生成された数多くのファイルを削除します。これらのファイルが残っていても問題はありません。実際、このサンプル アプリケーションで作業を続ける場合、tuxconfigQUE、および TLOG は再度作成しなくても済むように残しておくと便利です。


  ページの先頭       前  次