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: parameter null or not set
TUXDIR
パラメータにOracle Tuxedoシステムのディレクトリ構造でのルート・ディレクトリを設定し、エクスポートします。APPDIR
を、XMLSTOCKAPP
のソース・ファイルが置かれた{TUXDIR}/samples/atmi/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
で使用され、株式アプリケーションの各サーバーをコンパイルしてビルドします。(詳細は、『Oracle Oracle 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
オプションでは、サーバー内のサービスを処理する関数には任意の名前を指定できます。詳細は、『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
バイナリ形式の構成ファイルを作成する場合、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
の停止コマンド)を実行すると、次のタスクが行われます。