|
XMLSTOCKAPP は、Oracle Tuxedo システム ソフトウェアに同梱されている株式売買の ATMI サンプル アプリケーションです。このアプリケーションでは、単一のマシン上にある 2 つのサーバを実行し、C および C++ Tuxedo サーバからのパーサの呼び出しと XML バッファのルーティングを示します。片方のサーバは C++ で記述された Tuxedo サーバです (stockxml)。もう一方のサーバは C で記述されています (stockxml_c)。2 つのサーバは同じ STOCKQUOTE サービスを提供します。クライアントはサービスを呼び出し、株価を返します。次に XML バッファを出力します。
ここでは、XMLSTOCKAPP アプリケーションを開発する方法について、手順を順に示して説明します。このチュートリアルに従って XMLSTOCKAPP の「開発」を経験すると、独自のアプリケーションを開発できるようになります。
XMLSTOCKAPP チュートリアルは、次の 3 つの節から構成されています。
| 注意 : | ここで説明する内容は、アプリケーションの開発、管理、プログラミングに経験のあるシステム ユーザを対象としています。また、Oracle Tuxedo システム ソフトウェアについて理解していることを前提としています。Oracle Tuxedo アプリケーションをビルドするには、開発ラインセンスが必要です。 |
ここでは、XMLSTOCKAPP アプリケーションを構成するファイル、クライアント、およびサービスについて説明します。それぞれの詳細については以下を参照してください。
XMLSTOCKAPP アプリケーションを構成するファイルは、samples/atmi/xmlstockapp ディレクトリに置かれています。このサンプルに用意されているファイルは、次のとおりです。
XMLSTOCKAPP ディレクトリには、次のファイルが置かれています。
Oracle Tuxedo システムの ATMI クライアント/サーバ アーキテクチャでは、通信に次の 2 つのモードがあります。
XMLSTOCKAPP では要求/応答モードを実装し、STOCKQUOTE サービスを使用して株価を要求します。
Client.cpp は XML ファイル stock_quote_beas.xml または stock_quote_msft.xml からの入力を使用するクライアント プログラムです。STOCKQUOTE サービスを呼び出す照会を行い、BEAS または MSFT の株価を返します。このプログラムは、次のように実行可能プログラムとして呼び出します。
Client stock_quote_beas.xml
Client stock_quote_msft.xml
ATMI サーバとは、1 つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedo システムでは、サーバはクライアントとして動作するプロセスから継続的に要求を受け取り、それを適切なサービスに転送します。Oracle Tuxedo システムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース マネージャにアクセスすることによって実現されます。サービス ルーチンは、Oracle Tuxedo システム プログラマによって作成されなければならないアプリケーションの一部です。ユーザ定義のクライアントは、アプリケーションの別の部分に相当します。
XMLSTOCKAPP プログラムの STOCKQUOTE サービスは、アプリケーション トランザクション モニタ インタフェース (ATMI) で提供される機能を使用して、クライアントに XML バッファとして株価を返します。
ここでは、XMLSTOCKAPP を実行するために必要なファイルやリソースを作成するための手順を順に示します。
ファイルを編集したりサンプルを実行したりする前に、XMLSTOCKAPP ファイルを独自のディレクトリにコピーしておくことをお勧めします。
TUXDIR が設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。 TUXDIR: パラメータが null か、設定されていません。
TUXDIR パラメータに Oracle Tuxedo システムのディレクトリ構造でのルート ディレクトリを設定し、エクスポートします。APPDIR を {TUXDIR}/samples/atmi/XMLSTOCKAPP ディレクトリに設定します。これは、XMLSTOCKAPP のソース ファイルが置かれたディレクトリです。APPDIR は、Oracle Tuxedo システムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース ファイルを上書きしないように XMLSTOCKAPP ファイルを別のディレクトリにコピーした場合は、そのディレクトリを入力します。TUXDIR の下位ディレクトリである必要はありません。. ./<VARFILE>
HP-UX と AIX の場合を除いて、LD_LIBRARY_PATH には、共有ライブラリを使用するシステムの $TUXDIR/lib が含まれている必要があります。
export CFLAGS=-I
特定のオペレーティング システムの場合は、以下のコマンドを使用します。
buildclient -o Client -f Client.cpp -f SAXPrint.cpp -f SAXPrintHandlers.cpp -f -ltxml
XMLSTOCKAPP サンプルには 2 つのサーバが用意されています。ただし、このサンプルのサーバをビルドするには、README ファイルの指示に従う必要があります。
実行可能な ATMI サーバをビルドするには、buildserver を使用します。このコマンドではオプションを使用して、出力ファイル、アプリケーションで提供される入力ファイル、各種の方法で Oracle Tuxedo システム アプリケーションを実行するためのライブラリを指定します。
buildserver のコマンドラインで指定できる主なオプションを以下の例に示します。
buildserver コマンドは .mk で使用され、株式アプリケーションの各サーバをコンパイルしてビルドします。詳細については、『Tuxedo コマンド リファレンス』の「buildserver(1)」を参照してください。
次のように、buildserver コマンドで stockxml サーバと stockxml_c サーバをビルドします。
buildserver -s STOCKQUOTE -o stockxml -f stockxml.cpp -f DOMTreeErrorReporter.cpp -f -ltxml
buildserver -s STOCKQUOTE -f stockxml_c.c -o stockxml_c -f xmlWrapper.cpp -f DOMTreeErrorReporter.cpp -f -ltxml
以下は、コマンドラインで指定されている各オプションの説明です。
-o オプションは、実行可能出力ファイルに名前を指定する場合に使用します。名前が指定されていない場合は、SERVER という名前が付きます。-s オプションは、サーバの起動時に宣言されるサーバのサービス名を指定します。サービスを実行する関数名がサービス名と異なる場合、関数名が -s オプションの引数の一部になります。XMLSTOCKAPP では、関数名はサービス名と同じなので、サービス名だけを指定します。サービス名では、すべての文字列を大文字で指定します。ただし、buildserver の -s オプションでは、サーバ内のサービスを処理する関数には任意の名前を付けることができます。詳細については、『Tuxedo コマンド リファレンス』の「buildserver(1)」を参照してください。システム管理者は、buildserver コマンドでサーバを作成した際に使用されたサービスのサブセットだけをサーバの起動時に利用できるように設定することもできます。詳細については、『Oracle Tuxedo アプリケーション実行時の管理』および『Oracle Tuxedo アプリケーションの設定』を参照してください。-f オプションは、リンク時と編集時に使用されるファイルを指定します。buildserver リファレンス ページの -l オプションも参照してください。ファイルがリストされる順序には意味があります。この順序は、関数の参照、およびその参照がどのライブラリで解決されるかによって決定されます。ソース モジュールは、関数の参照が解決されるライブラリの前にリストされます。オブジェクト ファイルは、別個の .o ファイル、またはアーカイブ (.a) ファイルにあるファイル グループです。-f の引数として 1 つ以上のファイル名を指定する場合は、二重引用符で各ファイル名を囲む必要があります。-f オプションは、必要な数だけ使用できます。-s オプションは、stockxml および stockxml_c サーバを構成するサービスとして STOCKQUOTE サービスを指定します。-o オプションは実行可能出力ファイルに stockxml および stockxml_c という名前を付け、-f オプションは stockxml.cpp、DOMTreeErrorReporter.cpp、および xmlWrapper.cpp ファイルがビルドでのリンク時と編集時に使用されることを指定します。
ubbsimple サンプル コンフィグレーション ファイルを編集して、山かっこで囲まれた項目を実際のインストールに適した値に置き換える必要があります。TUXDIR および TUXCONFIG 環境変数はコンフィグレーション ファイルの値と一致していなければなりません。
1$
2
3 # 簡単な BEA Tuxedo アプリケーション用の UBBCONFIG スケルトン ファイルです。
4 # <山かっこで囲まれた文字列> を適切な値で置き換えます。
5 RESOURCES
6 IPCKEY <32,768 よりも大きい IPC キーで置き換えます>
7
8 # 例 :
9
10 #IPCKEY 62345
11
12 MASTER simple
13 MAXACCESSERS 5
14 MAXSERVERS 5
15 MAXSERVICES 10
16 MODEL SHM
17 LDBAL N
18
19 *MACHINES
20
21 DEFAULT:
22
23 APPDIR="<現在のパス名で置き換えます>"
24 TUXCONFIG="<TUXCONFIG のパス名で置き換えます>"
25 TUXDIR="<Tuxedo のルート ディレクトリ (/ 以外) を指定します>"
26 # 例 :
27 # APPDIR="/usr/me/simpdir"
28 # TUXCONFIG="/usr/me/simpdir/tuxconfig"
29 # TUXDIR="/usr/tuxedo"
30
31 <Machine-name> LMID=simple
32 # 例 :
33 #tuxmach LMID=simple
34 *GROUPS
35 GROUP1
36 LMID=simple GRPNO=1 OPENINFO=NONE
37
38 *SERVERS
39 DEFAULT:
40 CLOPT="-A"
41 stockxml SRVGRP=GROUP1 SRVID=1
42 stockxml_c SRVGRP=GROUP1 SRVID=1
43 *SERVICES
44 STOCKQUOTE
バイナリ形式のコンフィグレーション ファイルを作成する場合、XMLSTOCKAPP ファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
コンフィグレーション ファイルを編集したら、それを MASTER マシン上にバイナリ ファイルとしてロードする必要があります。バイナリ形式のコンフィグレーション ファイルの名前は TUXCONFIG、そのパス名は TUXCONFIG 環境変数に定義されています。このファイルは、Oracle Tuxedo のシステム管理者の有効なユーザ ID およびグループ ID を持つユーザが作成します。この 2 つの ID は、ご使用のコンフィグレーション ファイルの UID および GID の値と同じであることが必要です。同じではない場合、XMLSTOCKAPP の実行時にパーミッションの問題が発生します。
TUXCONFIG を作成します。 tmloadcf ubbsimple
コンフィグレーションのロード時には、このコンフィグレーションをインストールするかどうか、およびインストールする場合は既存のコンフィグレーション ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンドラインで -y オプションを指定します。
-c オプションを指定します。
TUXCONFIG は、MASTER マシン上だけにインストールできます。アプリケーションの起動時に tmboot によってほかのマシンに伝播されます。
ロードする前に tmloadcf によってテキスト形式のコンフィグレーション ファイル (UBBCONFIG) が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
ここでは、XMLSTOCKAPP を起動し、各種のクライアント プログラムとトランザクションを行ってテストし、終了する手順について順に説明します。
XMLSTOCKAPP を起動する前に、アプリケーションをサポートするのに十分な IPC リソースがマシンにあることを確認します。IPC リソースに関するレポートを出力するには、tmboot コマンドに -c オプションを指定します。
このレポートは、コンフィグレーション内のすべてのサーバが起動するまで出力されます。起動したサーバの合計数が出力された時点でレポートは終了します。
必要に応じて、コンフィグレーションの一部のサーバだけを起動することもできます。たとえば、管理サーバだけを起動するには、-A オプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
tmboot では、起動したサーバ数がレポートされるほかに、ULOG にメッセージが送信されます。
XMLSTOCKAPP を終了するには、次のように、引数を指定せずに tmshutdown(1) コマンドを MASTER マシンで入力します。
tmshutdown -y
このコマンド (または tmadmin の停止コマンド) を実行すると、次のタスクが行われます。
|