XMLSTOCKAPP (CおよびC++ XMLパーサー・アプリケーション)のチュートリアル
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ディレクトリには、次のファイルが置かれています。
•
|
クライアントへの2つの .xml入力ファイル: stock_quote_beas.xmlおよび stock_quote_msft.xml
|
•
|
2つのサーバー・ファイル: stockxmlおよび stockxml_c
|
•
|
STOCKAPPをサンプル・アプリケーションとして実行するためのファイル
|
Oracle TuxedoシステムのATMIクライアント/サーバー・アーキテクチャでは、通信に次の2つのモードがあります。
•
|
リクエスト/レスポンス・モード。サーバーが実行する1つのサービス・リクエストを送り、1つのレスポンスを受け取ります。
|
•
|
会話モード。クライアント(またはクライアントとして動作するサーバー)とサーバー間に専用の接続が確立されます。終了するまで、この接続はアクティブになったままです。接続がアクティブであるかぎり、参加している2つのプロセス間で、サービスに対するリクエストとレスポンスをそれぞれ含むメッセージをやり取りできます。
|
XMLSTOCKAPPではリクエスト/レスポンス・モードを実装し、
STOCKQUOTEサービスを使用して株価をリクエストします。
2.
|
XMLファイル内の単一の引数で実行されるクライアントが、STOCKQUOTEサービスを呼び出します。
|
リクエスト/レスポンス・クライアント: stock_quote_beas.xml
Client.cppはXMLファイル、
stock_quote_beas.xmlまたは
stock_quote_msft.xmlからの入力を使用するクライアント・プログラムです。
STOCKQUOTEサービスを呼び出す問合せを行い、BEASまたはMSFTの株価を戻します。これは、次のように実行可能プログラムとして呼び出されます:
Client stock_quote_beas.xml
Client stock_quote_msft.xml
•
|
『Oracle Tuxedo ATMIの紹介』の ATMIの使用に関する項
|
•
|
『Oracle Tuxedo ATMIの紹介』の 型付きバッファに関する項
|
•
|
『Oracle Tuxedoコマンド・リファレンス』および『Oracle Tuxedo ATMI C言語関数リファレンス』 のATMIコマンドおよび関数
|
ATMIサーバーとは、1つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedoシステムでは、サーバーはクライアントとして動作するプロセスから継続的にリクエストを受け取り、それを適切なサービスにディスパッチします。Oracle Tuxedoシステムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース・マネージャにアクセスすることによって実現されます。サービス・ルーチンは、Oracle Tuxedoシステム・プログラマによって作成する必要のあるアプリケーションの一部です(ユーザー定義のクライアントは、アプリケーションの別の部分)。
XMLSTOCKAPPプログラムの
STOCKQUOTEサービスは、アプリケーション・トランザクション・モニター・インタフェース(ATMI)で提供される機能を使用して、クライアントにXMLバッファとして株価を返します。
XMLSTOCKAPPのファイルおよびリソースの準備
ここでは、
XMLSTOCKAPPを実行するために必要なファイルやリソースを作成するための手順を順に示します。
ステップ1 :新しいディレクトリへのXMLSTOCKAPPファイルのコピー
ファイルを編集したりサンプルを実行したりする前に、XMLSTOCKAPPファイルを独自のディレクトリにコピーしておくことをお薦めします。
1.
|
TUXDIRが設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。
|
2.
|
TUXDIRパラメータにOracle Tuxedoシステムのディレクトリ構造でのルート・ディレクトリを設定し、エクスポートします。
|
3.
|
APPDIRを、 XMLSTOCKAPPのソース・ファイルが置かれた {TUXDIR}/samples/atmi/XMLSTOCKAPPディレクトリに設定します。 APPDIRは、Oracle Tuxedoシステムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース・ファイルを上書きしないように XMLSTOCKAPPファイルを別のディレクトリにコピーした場合は、そのディレクトリを入力します。 TUXDIRの下位ディレクトリである必要はありません。
|
4.
|
環境変数ファイルに必要な変更を加えたら、次のように実行します。
|
HP-UXとAIXの場合を除いて、LD_LIBRARY_PATHには、共有ライブラリを使用するシステムの
$TUXDIR/libが含まれている必要があります。
•
|
AIXの場合、 LD_LIBRARY_PATHではなく LIBPATHを設定します。
|
•
|
HP-UXの場合、 LD_LIBRARY_PATHではなく SHLIB_PATHを設定します。
|
•
|
オペレーティング・システムがSun Solarisの場合、 PATHの先頭で /usr/5binを指定する必要があります。次のコマンドを使用します。
|
PATH=/usr/5bin:$PATH;export PATH
シェルとしては、
cshではなく
/bin/shを使用します。
クライアントをビルドするには、次のコマンドを使用します。
特定のオペレーティング・システムの場合は、次のコマンドを使用します。
クライアントをビルドするには、次のコマンドを使用します。
buildclient -o Client -f Client.cpp -f SAXPrint.cpp -f SAXPrintHandlers.cpp -f -ltxml
ステップ4 : XMLSTOCKAPPでのサーバーのビルド
XMLSTOCKAPPサンプルには2つのサーバーが用意されています。ただし、このサンプルのサーバーをビルドするには、READMEファイルの指示に従う必要があります。
実行可能なATMIサーバーをビルドするには、buildserverを使用します。このコマンドではオプションを使用して、出力ファイル、アプリケーションで提供される入力ファイル、各種の方法でOracle Tuxedoシステム・アプリケーションを実行するためのライブラリを指定します。
buildserverのコマンド行で指定できる主なオプションを次の例に示します。
buildserverコマンドは
.mkで使用され、株式アプリケーションの各サーバーをコンパイルしてビルドします。(詳細は、
『Oracle Tuxedoコマンド・リファレンス』の
buildserver(1)に関する項を参照してください。)
stockxmlおよびstockxml_cサーバーのビルド
次のように、
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オプションでは、サーバー内のサービスを処理する関数には任意の名前を指定できます。詳細は、 『Oracle 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 #Skeleton UBBCONFIG file for the BEA Tuxedo Simple Application.
4 #Replace the <bracketed> items with the appropriate values.
5 RESOURCES
6 IPCKEY <
Replace with valid IPC Key greater than 32,768>
7
8 #Example:
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="<
Replace with the current pathname>"
24 TUXCONFIG="<
Replace with TUXCONFIG Pathname>"
25 TUXDIR="<
Root directory of Tuxedo (not /)>"
26 #Example:
27 # APPDIR="/usr/me/simpdir"
28 # TUXCONFIG="/usr/me/simpdir/tuxconfig"
29 # TUXDIR="/usr/tuxedo"
30
31 <Machine-name> LMID=simple
32 #Example:
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
5.
|
山カッコで囲まれた各文字列 <string>を適切な値に置き換えます。
|
バイナリ形式の構成ファイルを作成する場合、
XMLSTOCKAPPファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
1.
|
XMLSTOCKAPPファイルが置かれたディレクトリに移動します。
|
<variable_file>は変数ファイルの名前です。
構成ファイルを編集したら、それを
MASTERマシン上にバイナリ・ファイルとしてロードする必要があります。バイナリ形式の構成ファイルの名前は
TUXCONFIG、そのパス名は
TUXCONFIG環境変数に定義されています。このファイルは、Oracle Tuxedoのシステム管理者の有効なユーザーIDおよびグループIDを持つユーザーが作成し、この2つのIDは、ご使用の構成ファイルの
UIDおよび
GIDの値と同じであることが必要です。この要件が満たされていない場合、
XMLSTOCKAPPの実行時に権限の問題が発生します。
1.
|
次のコマンドを入力して、 TUXCONFIGを作成します。
|
構成のロード時には、この構成をインストールするかどうか、およびインストールする場合は既存の構成ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンド行で
-yオプションを指定します。
2.
|
アプリケーションで必要なIPCリソースをOracle Tuxedoシステムで計算する場合は、コマンド行で -cオプションを指定します。
|
TUXCONFIGは、
MASTERマシン上だけにインストールできます。アプリケーションの起動時に
tmbootによってほかのマシンに伝播されます。
ロードする前にtmloadcfによってテキスト形式の構成ファイル(
UBBCONFIG)が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
ここでは、
XMLSTOCKAPPを起動し、各種のクライアント・プログラムとトランザクションを行ってテストし、終了する手順について順に説明します。
XMLSTOCKAPPを起動する前に、アプリケーションをサポートするのに十分なIPCリソースがマシンにあることを確認します。IPCリソースに関するレポートを出力するには、
tmbootコマンドに
-cオプションを指定します。
2.
|
次のコマンドを入力して、アプリケーションを起動します。
|
「-
y」と入力すると、次のようなレポートが画面に出力されます。
Booting all admin and server processes in /usr/me/appdir/tuxconfig
Booting all admin processes
exec BBL -A:
process id=24223 Started.
このレポートは、構成内のすべてのサーバーが起動するまで出力されます。起動したサーバーの合計数が出力された時点でレポートは終了します。
必要であれば、構成の一部のサーバーだけを起動することもできます。たとえば、管理サーバーだけを起動するには、
-Aオプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
tmbootでは、起動したサーバー数がレポートされるほかに、
ULOGにメッセージが送信されます。
ステップ3 : XMLSTOCKAPPサービスのテスト
1.
|
実行中のシステムにログインする場合は、 XMLSTOCKAPPに環境変数を設定する必要があります。その場合、次のコマンドを入力します。
|
2.
|
クライアント・プログラムを実行します。クライアント・プログラムを実行するには、次のコマンドを入力します。
|
Client stock_quote_beas.xml
XMLSTOCKAPPを終了するには、次のように、引数を指定せずに
tmshutdown(1)コマンドを
MASTERマシンで入力します。
このコマンド(または
tmadminの停止コマンド)を実行すると、次のタスクが行われます。
•
|
すべてのアプリケーション・サーバー、ゲートウェイ・サーバー、TMSサーバー、および管理サーバーが停止します。
|
•
|
割り当てられていたすべてのIPCリソースが削除されます。
|