目次 前 次 PDF


XMLSTOCKAPP (CおよびC++ XMLパーサー・アプリケーション)のチュートリアル

XMLSTOCKAPP (CおよびC++ XMLパーサー・アプリケーション)のチュートリアル
このトピックには次の項が含まれます:
XMLSTOCKAPPとは
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アプリケーションを構成するファイル、クライアント、およびサービスについて説明します。それぞれの詳細は、次を参照してください。
XMLSTOCKAPPのファイルについて
XMLSTOCKAPPアプリケーションを構成するファイルは、samples/atmi/xmlstockappディレクトリに置かれています。このサンプルに用意されているファイルは、次のとおりです。
XMLSTOCKAPPディレクトリには、次のファイルが置かれています。
クライアントへの2つの.xml入力ファイル: stock_quote_beas.xmlおよびstock_quote_msft.xml
1つのクライアント: Client.cpp
2つのサーバー・ファイル: stockxmlおよびstockxml_c
STOCKAPPをサンプル・アプリケーションとして実行するためのファイル
SAXPrint.cpp
SAXPrintHandler.cpp
DOMTreeErrorReporter.cpp
xmlWrapper.cpp
XMLSTOCKAPPクライアントの検証
Oracle TuxedoシステムのATMIクライアント/サーバー・アーキテクチャでは、通信に次の2つのモードがあります。
リクエスト/レスポンス・モード。サーバーが実行する1つのサービス・リクエストを送り、1つのレスポンスを受け取ります。
会話モード。クライアント(またはクライアントとして動作するサーバー)とサーバー間に専用の接続が確立されます。終了するまで、この接続はアクティブになったままです。接続がアクティブであるかぎり、参加している2つのプロセス間で、サービスに対するリクエストとレスポンスをそれぞれ含むメッセージをやり取りできます。
XMLSTOCKAPPではリクエスト/レスポンス・モードを実装し、STOCKQUOTEサービスを使用して株価をリクエストします。
1.
BEASまたはMSFTの株価のリクエスト。
2.
XMLファイル内の単一の引数で実行されるクライアントが、STOCKQUOTEサービスを呼び出します。
3.
サービスはXMLバッファを株価で更新します。
4.
クライアントはXMLバッファを出力します。
リクエスト/レスポンス・クライアント: 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コマンドおよび関数
XMLSTOCKAPPサーバーの検証
ATMIサーバーとは、1つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedoシステムでは、サーバーはクライアントとして動作するプロセスから継続的にリクエストを受け取り、それを適切なサービスにディスパッチします。Oracle Tuxedoシステムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース・マネージャにアクセスすることによって実現されます。サービス・ルーチンは、Oracle Tuxedoシステム・プログラマによって作成する必要のあるアプリケーションの一部です(ユーザー定義のクライアントは、アプリケーションの別の部分)。
XMLSTOCKAPPプログラムのSTOCKQUOTEサービスは、アプリケーション・トランザクション・モニター・インタフェース(ATMI)で提供される機能を使用して、クライアントにXMLバッファとして株価を返します。
XMLSTOCKAPPのファイルおよびリソースの準備
ここでは、XMLSTOCKAPPを実行するために必要なファイルやリソースを作成するための手順を順に示します。
ステップ1 :新しいディレクトリへのXMLSTOCKAPPファイルのコピー
ファイルを編集したりサンプルを実行したりする前に、XMLSTOCKAPPファイルを独自のディレクトリにコピーしておくことをお薦めします。
ステップ2 :環境変数の設定
環境変数ファイルを編集する必要があります。
1.
TUXDIRが設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。
TUXDIR: nullまたは未設定のパラメータ
2.
TUXDIRパラメータにOracle Tuxedoシステムのディレクトリ構造でのルート・ディレクトリを設定し、エクスポートします。
3.
APPDIRを、XMLSTOCKAPPのソース・ファイルが置かれた{TUXDIR}/samples/atmi/XMLSTOCKAPPディレクトリに設定します。APPDIRは、Oracle Tuxedoシステムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース・ファイルを上書きしないようにXMLSTOCKAPPファイルを別のディレクトリにコピーした場合は、そのディレクトリを入力します。TUXDIRの下位ディレクトリである必要はありません。
4.
環境変数ファイルに必要な変更を加えたら、次のように実行します。
. ./<VARFILE>
<VARFILE>は環境変数ファイルの名前です。
その他の要件
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を使用します。
ステップ3 :クライアントのビルド
クライアントをビルドするには、次のコマンドを使用します。
export CFLAGS=-I
特定のオペレーティング・システムの場合は、次のコマンドを使用します。
Solarisの場合:
export CC=CC
HP-UXの場合:
export CC=aCC
Digital Unixの場合:
export CC=cxx
AIXの場合:
export CC=xlC_r
Linuxの場合:
export CC=g++
クライアントをビルドするには、次のコマンドを使用します。
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.cppDOMTreeErrorReporter.cppおよびxmlWrapper.cppファイルがビルドでのリンク編集時に使用されるように指定します。
関連項目
ステップ5 :構成ファイルの編集
ubbsimpleサンプル構成ファイルを編集して、山かっこで囲まれた項目を実際のインストールに適した値に置き換える必要があります。TUXDIRおよびTUXCONFIG環境変数は構成ファイルの値と一致していなければなりません。
リスト6-1 ubbsimple構成ファイル
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>を適切な値に置き換えます。
関連項目
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』UBBCONFIG(5)に関する項
ステップ6 :バイナリ形式の構成ファイルの作成
バイナリ形式の構成ファイルを作成する場合、XMLSTOCKAPPファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
1.
XMLSTOCKAPPファイルが置かれたディレクトリに移動します。
2.
次のコマンドを入力して、環境変数を設定します。
. ./<variable_file>
<variable_file>は変数ファイルの名前です。
構成ファイルのロード
構成ファイルを編集したら、それをMASTERマシン上にバイナリ・ファイルとしてロードする必要があります。バイナリ形式の構成ファイルの名前はTUXCONFIG、そのパス名はTUXCONFIG環境変数に定義されています。このファイルは、Oracle Tuxedoのシステム管理者の有効なユーザーIDおよびグループIDを持つユーザーが作成し、この2つのIDは、ご使用の構成ファイルのUIDおよびGIDの値と同じであることが必要です。この要件が満たされていない場合、XMLSTOCKAPPの実行時に権限の問題が発生します。
1.
次のコマンドを入力して、TUXCONFIGを作成します。
tmloadcf ubbsimple
構成のロード時には、この構成をインストールするかどうか、およびインストールする場合は既存の構成ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンド行で-yオプションを指定します。
2.
アプリケーションで必要なIPCリソースをOracle Tuxedoシステムで計算する場合は、コマンド行で-cオプションを指定します。
TUXCONFIGは、MASTERマシン上だけにインストールできます。アプリケーションの起動時にtmbootによってほかのマシンに伝播されます。
ロードする前にtmloadcfによってテキスト形式の構成ファイル(UBBCONFIG)が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
関連項目
『Oracle Tuxedoコマンド・リファレンス』tmloadcf(1)に関する項
XMLSTOCKAPPの実行
ここでは、XMLSTOCKAPPを起動し、各種のクライアント・プログラムとトランザクションを行ってテストし、終了する手順について順に説明します。
ステップ1 :起動する前に行う準備作業
XMLSTOCKAPPを起動する前に、アプリケーションをサポートするのに十分なIPCリソースがマシンにあることを確認します。IPCリソースに関するレポートを出力するには、tmbootコマンドに-cオプションを指定します。
ステップ2 : XMLSTOCKAPPの起動
1.
環境を設定します。
../<variable_file>
2.
次のコマンドを入力して、アプリケーションを起動します。
tmboot -y
「-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にメッセージが送信されます。
関連項目
『Oracle Tuxedoコマンド・リファレンス』tmboot(1)に関する項
『Oracle Tuxedo ATMI COBOL関数リファレンス』USERLOG(3cbl)に関する項
ステップ3 : XMLSTOCKAPPサービスのテスト
1.
実行中のシステムにログインする場合は、XMLSTOCKAPPに環境変数を設定する必要があります。その場合、次のコマンドを入力します。
../<variable_file>
2.
クライアント・プログラムを実行します。クライアント・プログラムを実行するには、次のコマンドを入力します。
Client stock_quote_beas.xml
ステップ4 : XMLSTOCKAPPの停止
XMLSTOCKAPPを終了するには、次のように、引数を指定せずにtmshutdown(1)コマンドをMASTERマシンで入力します。
tmshutdown -y
このコマンド(またはtmadminの停止コマンド)を実行すると、次のタスクが行われます。
すべてのアプリケーション・サーバー、ゲートウェイ・サーバー、TMSサーバー、および管理サーバーが停止します。
割り当てられていたすべてのIPCリソースが削除されます。
関連項目
『Oracle Tuxedoコマンド・リファレンス』tmadmin(1)に関する項
『Oracle Tuxedoコマンド・リファレンス』tmshutdown(1)に関する項
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved