![]() ![]() ![]() ![]() |
xmlfmlapp
は、クライアント要求を使用して株式を照会および売買するサンプル ATMI 株式アプリケーションです。このアプリケーションでは、3 つのサービス「QUERY
」、「BUY
」、および「SELL
」を単一のサーバで実行します。これら 3 つのサービスは、C 言語でコーディングされており、入出力に FML32 バッファを使用できます。
ここでは、xmlfmlapp
アプリケーションを開発する方法について、手順を順に示して説明します。このチュートリアルに従って xmlfmlapp
の「開発」を経験すると、独自のアプリケーションを開発できるようになります。
xmlfmlapp
チュートリアルは、次の 3 つの節から構成されています。
注意 : | ここで説明する内容は、アプリケーションの開発、管理、プログラミングに経験のあるシステム ユーザを対象としています。また、Oracle Tuxedo システム ソフトウェアについて理解していることを前提としています。Oracle Tuxedo アプリケーションをビルドするには、開発ラインセンスが必要です。 |
このサンプルでは、XML から FML32 への自動および手動変換機能を使用して、Xerces パーサ API を使用せずに XML データを操作する方法について説明します。C 言語で記述された Tuxedo クライアント/サーバ アプリケーションで Xerces パーサ API を使用するには、ダイナミック ライブラリを CPP で記述し、C プログラムで使用できるようにラップする必要があります (詳細については、「XMLSTOCKAPP とは」を参照してください)。XML から FML32 への手動および自動変換機能を使用すると、開発者は FML32 バッファ データを自由に操作できます。XML から FML32 への手動および自動変換機能の詳細については、『C 言語を使用した Oracle Tuxedo アプリケーションのプログラミング』の「XML データと FML/FML32 バッファ間の変換」を参照してください。
このサンプルでは、クライアントが要求 (照会や売買) を対応するサービスに送信します。クライアントは、XML バッファを送受信します。サーバと通信するため、3 つのサービスすべてで「BUFTYPECONV=XML2FML32」パラメータを使用し、対応するサービスに要求を送信する前に XML バッファを FML32 に変換します。情報をクライアントに返す前に、このパラメータによって FML32 バッファが XML バッファに変換されます。サーバでは、FML32 データを直接処理します。
要求側の XML バッファでスキーマを使用して XML ドキュメントを検証することで、有効なデータのみが送信されます。
このサンプルのサーバは、XML ドキュメントから株式情報を読み取り、これを tpxmltofml32(3c) 関数を使用して直接 FML32 バッファに変換します。その後、要求された FML32 データに基づいてこのバッファから情報を取得し、要求された FML32 データを返します。
ここでは、xmlfmlapp
アプリケーションを構成するファイル、クライアント、およびサービスについて説明します。それぞれの詳細については以下を参照してください。
xmlfmlapp
アプリケーションを構成するファイルは、samples/atmi/xmlfmlapp
ディレクトリに置かれています。xmlfmlapp
ディレクトリには、次のファイルが置かれています。
Oracle Tuxedo システムの ATMI クライアント/サーバ アーキテクチャでは、通信に次の 2 つのモードがあります。
xmlfmlapp
では、以下の 3 つのサービスを使用して要求/応答モードを実装します。
stockclient.c
は、指定された XML ファイルからの入力を使用するクライアント プログラムです。QUERY
、BUY
、および SELL
サービスを呼び出し、実行結果を返します。このプログラムは、次のように実行可能プログラムとして呼び出します。
ATMI サーバとは、1 つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedo システムでは、サーバはクライアントとして動作するプロセスから継続的に要求を受け取り、それを適切なサービスに転送します。Oracle Tuxedo システムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース マネージャにアクセスすることによって実現されます。サービス ルーチンは、Oracle Tuxedo システム プログラマによって作成されなければならないアプリケーションの一部です。ユーザ定義のクライアントは、アプリケーションの別の部分に相当します。
xmlfmlapp
プログラムの QUERY
サービスでは、FML32 バッファを使用できます。このサービスは、アプリケーション トランザクション モニタ インタフェース (ATMI) の関数を使用して株式情報を照会し、結果を FML32 バッファでクライアントに返します。
xmlfmlapp
プログラムの BUY
サービスでは、FML32 バッファを使用できます。このサービスは、アプリケーション トランザクション モニタ インタフェース (ATMI) の関数を使用して株式を購入します。
xmlfmlapp
プログラムの SELL
サービスでは、FML32 バッファを使用できます。このサービスは、アプリケーション トランザクション モニタ インタフェース (ATMI) の関数を使用して株式を売却します。
ここでは、xmlfmlapp
を実行するために必要なファイルやリソースを作成するための手順を順に示します。
ファイルを編集したりサンプルを実行したりする前に、xmlfmlapp
ファイルを独自のディレクトリにコピーしておくことをお勧めします。
TUXDIR
が設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。 TUXDIR: パラメータが null か、設定されていません。
TUXDIR
パラメータに Oracle Tuxedo システムのディレクトリ構造でのルート ディレクトリを設定し、エクスポートします。APPDIR
を {TUXDIR}/samples/atmi/xmlfmlapp
ディレクトリに設定します。これは、xmlfmlapp
のソース ファイルが置かれたディレクトリです。APPDIR
は、Oracle Tuxedo システムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース ファイルを上書きしないように xmlfmlapp
ファイルを別のディレクトリにコピーした場合は、そのディレクトリを入力します。TUXDIR
の下位ディレクトリである必要はありません。. ./setenv.cmd
setenv.cmd
は、Windows 用の実行可能ファイルです。Unix システムの場合は setenv.sh
を使用します。
HP-UX と AIX の場合を除いて、LD_LIBRARY_PATH
には、共有ライブラリを使用するシステムの $TUXDIR/lib
が含まれている必要があります。
FML32 フィールド テーブルを作成するには、次のコマンドを使用します。
xmlfmlapp バイナリ ファイルをビルドするには、以下のコマンドを使用します。
nmake -f make.nt
make -f make.mk
ubbsimple サンプル コンフィグレーション ファイルを編集して、山かっこで囲まれた項目を実際のインストールに適した値に置き換える必要があります。TUXDIR および TUXCONFIG 環境変数はコンフィグレーション ファイルの値と一致していなければなりません。
# (c) 2005 BEA Systems, Inc. All Rights Reserved.
#ident "@(#) samples/atmi/xmlfmlapp/ubbsimple $Revision: 1.3 $"
# 簡単な Tuxedo アプリケーション用の UBBCONFIG スケルトン ファイルです。
# <山かっこで囲まれた文字列> を適切な値で置き換えます。
*RESOURCES
IPCKEY <有効な IPC キーで置き換えます>
# 例 :
#IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 10
MAXSERVERS 5
MAXSERVICES 10
MODEL SHM
LDBAL N
*MACHINES
DEFAULT:
APPDIR="<現在のディレクトリのパス名で置き換えます>"
TUXCONFIG="<TUXCONFIG のパス名で置き換えます>"
TUXDIR="<TUXEDO のインストール先のディレクトリで置き換えます>"
# 例 :
# APPDIR="/home/me/simpapp"
# TUXCONFIG="/home/me/simpapp/tuxconfig"
# TUXDIR="/usr/tuxedo"
<Machine-name> LMID=simple
#Example:
#beatux LMID=simple
*GROUPS
GROUP1
LMID=simple GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
stockserver SRVGRP=GROUP1 SRVID=1
*SERVICES
QUERY BUFTYPECONV=XML2FML32
BUY BUFTYPECONV=XML2FML32
SELL BUFTYPECONV=XML2FML32
注意 : | 山かっこで囲まれた各文字列 <string> を適切な値に置き換えます。 |
バイナリ形式のコンフィグレーション ファイルを作成する場合、xmlfmlapp
ファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
コンフィグレーション ファイルを編集したら、それを MASTER
マシン上にバイナリ ファイルとしてロードする必要があります。バイナリ形式のコンフィグレーション ファイルの名前は TUXCONFIG
、そのパス名は TUXCONFIG
環境変数に定義されています。このファイルは、Oracle Tuxedo のシステム管理者の有効なユーザ ID およびグループ ID を持つユーザが作成します。この 2 つの ID は、ご使用のコンフィグレーション ファイルの UID
および GID
の値と同じであることが必要です。同じではない場合、xmlfmlapp
の実行時にパーミッションの問題が発生します。
TUXCONFIG
を作成します。 tmloadcf ubbsimple
コンフィグレーションのロード時には、このコンフィグレーションをインストールするかどうか、およびインストールする場合は既存のコンフィグレーション ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンドラインで -y
オプションを指定します。
-c
オプションを指定します。
TUXCONFIG
は、MASTER
マシン上だけにインストールできます。アプリケーションの起動時に tmboot
によってほかのマシンに伝播されます。
ロードする前に tmloadcf
によってテキスト形式のコンフィグレーション ファイル (UBBCONFIG
) が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
ここでは、xmlfmlapp
を起動し、さまざまな引数でクライアント プログラムを実行してテストし、終了する手順について順に説明します。
xmlfmlapp
を起動する前に、アプリケーションをサポートするのに十分な IPC リソースがマシンにあることを確認します。IPC リソースに関するレポートを出力するには、tmboot
コマンドに -c
オプションを指定します。
必要に応じて、コンフィグレーションの一部のサーバだけを起動することもできます。たとえば、管理サーバだけを起動するには、-A
オプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
xmlfmlapp
を終了するには、次のように、引数を指定せずに tmshutdown(1)
コマンドを MASTER
マシンで入力します。
tmshutdown -y
このコマンド (または tmadmin
の停止コマンド) を実行すると、次のタスクが行われます。
![]() ![]() ![]() |