目次 前 次 PDF


xmlfmlapp (完全なC XML/FML32変換アプリケーション)のチュートリアル

xmlfmlapp (完全なC XML/FML32変換アプリケーション)のチュートリアル
このトピックには次の項が含まれます:
xmlfmlappとは
xmlfmlappは、クライアント・リクエストを使用して株式を照会および売買するサンプルATMI株式アプリケーションです。このアプリケーションでは、3つのサービスQUERYBUYおよびSELLを単一のサーバーで実行します。これら3つのサービスは、C言語でコーディングされており、入出力にFML32バッファを使用できます。
このドキュメントでは、xmlfmlappアプリケーションを開発するための手順を順に示します。このチュートリアルでxmlfmlappの開発を経験すると、独自のアプリケーションを開発できるようになります。
xmlfmlappチュートリアルは、次の3つの項から構成されています。
注意:
ここで説明する内容は、アプリケーションの開発、管理、プログラミングに経験のあるシステム・ユーザーを対象としています。また、Oracle Tuxedoシステム・ソフトウェアについて理解していることを前提としています。Oracle Tuxedoアプリケーションをビルドするには、開発ライセンスが必要です。
xmlfmlappの把握
このサンプルでは、XMLからFML32への自動および手動変換機能を使用して、XercesパーサーAPIを使用せずにXMLデータを操作する方法について説明します。C言語で記述されたTuxedoクライアント/サーバー・アプリケーションでXercesパーサーAPIを使用するには、動的ライブラリをCPPで記述し、C言語プログラムで使用できるようにラップする必要があります(詳細は、「XMLSTOCKAPPとは」を参照してください)。XMLからFML32への手動および自動変換機能を使用すると、開発者はFML32バッファ・データを自由に操作できます。XMLからFML/FML32への手動および自動変換機能の詳細は、『Oracle Tuxedo C言語を使用したOracle Tuxedo ATMIアプリケーションのプログラミング』XMLデータとFML/FML32バッファ間の変換に関する項を参照してください。
このサンプルでは、クライアントがリクエスト(照会や売買)を対応するサービスに送信します。クライアントは、XMLバッファを送受信します。サーバーと通信するため、3つのサービスすべてで「BUFTYPECONV=XML2FML32」パラメータを使用し、対応するサービスにリクエストを送信する前にXMLバッファをFML32に変換します。情報をクライアントに返す前に、このパラメータによってFML32バッファがXMLバッファに変換されます。サーバーでは、FML32データを直接処理します。
リクエスト側のXMLバッファでスキーマを使用してXMLドキュメントを検証することで、有効なデータのみが送信されます。
このサンプルのサーバーは、XMLドキュメントから株式情報を読み取り、これをtpxmltofml32(3c)関数を使用して直接FML32バッファに変換します。その後、リクエストされたFML32データに基づいてこのバッファから情報を取得し、必要なFML32データを返します。
ここでは、xmlfmlappアプリケーションを構成するファイル、クライアント、およびサービスについて説明します。それぞれの詳細は、次を参照してください。
xmlfmlappのファイルについて
xmlfmlappアプリケーションを構成するファイルは、samples/atmi/xmlfmlappディレクトリに置かれています。xmlfmlappディレクトリには次のファイルが含まれています。
1つのクライアント: stockclient.c
1つのサーバー: stockserver.c
サービスが使用する株式情報を格納する1つの.xmlファイル: stock.xml
1つのFML32フィールド定義ファイル: stockflds
4つの.xmlクライアント入力ファイル:
stock_query_bea.xml
stock_query_msft.xml
stock_buy_bea.xml
stock_sell_msft.xml
XML入力ファイルを検証するための1つの.xmlスキーマ・ファイル: stock_operate.xsd
xmlfmlappクライアントの検証
Oracle TuxedoシステムのATMIクライアント/サーバー・アーキテクチャでは、通信に次の2つのモードがあります。
リクエスト/レスポンス・モード。サーバーが実行する1つのサービス・リクエストを送り、1つのレスポンスを受け取ります。
会話モード。クライアント(またはクライアントとして動作するサーバー)とサーバー間に専用の接続が確立されます。終了するまで、この接続はアクティブになったままです。接続がアクティブであるかぎり、参加している2つのプロセス間で、サービスに対するリクエストとレスポンスをそれぞれ含むメッセージをやり取りできます。
xmlfmlappでは、次の3つのサービスを使用してリクエスト/レスポンス・モードを実装します。
QUERY - 株価の照会
BUY - 株式の購入
SELL - 株式の売却
リクエスト/レスポンス・クライアント
stockclient.cは、指定されたXMLファイルからの入力を使用するクライアント・プログラムです。QUERYBUYおよびSELLサービスを呼び出し、実行結果を戻します。これは、次のように実行可能プログラムとして呼び出されます:
stockclient stock_query_bea.xml
stockclient stock_buy_bea.xml
stockclient stock_query_msft.xml
stockclient stock_sell_msft.xml
関連項目
『Oracle Tuxedo ATMIの紹介』ATMIの使用に関する項
『Oracle Tuxedo ATMIの紹介』型付きバッファに関する項
『Oracle Tuxedoコマンド・リファレンス』および『Oracle Tuxedo ATMI C言語関数リファレンス』のATMIコマンドおよび関数
xmlfmlappサーバーの検証
ATMIサーバーとは、1つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedoシステムでは、サーバーはクライアントとして動作するプロセスから継続的にリクエストを受け取り、それを適切なサービスにディスパッチします。Oracle Tuxedoシステムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース・マネージャにアクセスすることによって実現されます。サービス・ルーチンは、Oracle Tuxedoシステム・プログラマによって作成する必要のあるアプリケーションの一部です(ユーザー定義のクライアントは、アプリケーションの別の部分)。
xmlfmlappプログラムのQUERYサービスでは、FML32バッファを使用できます。このサービスは、アプリケーション・トランザクション・モニター・インタフェース(ATMI)の関数を使用して株式情報を照会し、結果をFML32バッファでクライアントに返します。
xmlfmlappプログラムのBUYサービスでは、FML32バッファを使用できます。このサービスは、アプリケーション・トランザクション・モニター・インタフェース(ATMI)の関数を使用して株式を購入します。
xmlfmlappプログラムのSELLサービスでは、FML32バッファを使用できます。このサービスは、アプリケーション・トランザクション・モニター・インタフェース(ATMI)の関数を使用して株式を売却します。
xmlfmlappのファイルおよびリソースの準備
ここでは、xmlfmlappを実行するために必要なファイルやリソースを作成するための手順を順に示します。
ステップ1 :新しいディレクトリへのxmlfmlappファイルのコピー
ファイルを編集したりサンプルを実行したりする前に、xmlfmlappファイルを独自のディレクトリにコピーしておくことをお薦めします。
ステップ2 :環境変数の設定
環境変数ファイルを編集する必要があります。
1.
TUXDIRが設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。
TUXDIR: nullまたは未設定のパラメータ
2.
TUXDIRパラメータにOracle Tuxedoシステムのディレクトリ構造でのルート・ディレクトリを設定し、エクスポートします。
3.
APPDIRを、xmlfmlappのソース・ファイルが置かれた{TUXDIR}/samples/atmi/xmlfmlappディレクトリに設定します。APPDIRは、Oracle Tuxedoシステムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース・ファイルを上書きしないようにxmlfmlappファイルを別のディレクトリにコピーした場合は、そのディレクトリを入力します。TUXDIRの下位ディレクトリである必要はありません。
4.
環境変数ファイルに必要な変更を加えたら、次のように実行します。
. ./setenv.cmd
setenv.cmdは、Windows用の実行可能ファイルです。UNIXシステムの場合はsetenv.shを使用します。
その他の要件
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 : FML32フィールド表の作成
FML32フィールド表を作成するには、次のコマンドを使用します。
mkfldhdr32 stockflds
ステップ4 : xmlfmlappバイナリのビルド
xmlfmlappバイナリ・ファイルをビルドするには、次のコマンドを使用します。
Windowsの場合:
nmake -f make.nt
UNIXの場合:
make -f make.mk
ステップ5 :構成ファイルの編集
ubbsimpleサンプル構成ファイルを編集して、山かっこで囲まれた項目を実際のインストールに適した値に置き換える必要があります。TUXDIRおよびTUXCONFIG環境変数は構成ファイルの値と一致していなければなりません。
リスト7-1 ubbsimple構成ファイル
# (c) 2005 BEA Systems, Inc. All Rights Reserved.
#ident "@(#) samples/atmi/xmlfmlapp/ubbsimple $Revision: 1.3 $"

#Skeleton UBBCONFIG file for the TUXEDO Simple Application.
#Replace the <bracketed> items with the appropriate values.

*RESOURCES
IPCKEY <Replace with a valid IPC Key>

#Example:
#IPCKEY 123456

DOMAINID simpapp
MASTER simple
MAXACCESSERS 10
MAXSERVERS 5
MAXSERVICES 10
MODEL SHM
LDBAL N

*MACHINES
DEFAULT:
APPDIR="<Replace with the current directory pathname>"
TUXCONFIG="<Replace with your TUXCONFIG Pathname>"
TUXDIR="<Directory where TUXEDO is installed>"
#Example:
# 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>を適切な値に置き換えます。
関連項目
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』UBBCONFIG(5)に関する項
ステップ6 :バイナリ形式の構成ファイルの作成
バイナリ形式の構成ファイルを作成する場合、xmlfmlappファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
1.
xmlfmlappファイルが置かれたディレクトリに移動します。
2.
次のコマンドを入力して、環境変数を設定します。
. ./setenv.cmd
setenv.cmdは、Windows用の実行可能ファイルです。UNIXシステムの場合はsetenv.shを使用します。
構成ファイルのロード
構成ファイルを編集したら、それをMASTERマシン上にバイナリ・ファイルとしてロードする必要があります。バイナリ形式の構成ファイルの名前はTUXCONFIG、そのパス名はTUXCONFIG環境変数に定義されています。このファイルは、Oracle Tuxedoのシステム管理者の有効なユーザーIDおよびグループIDを持つユーザーが作成し、この2つのIDは、ご使用の構成ファイルのUIDおよびGIDの値と同じであることが必要です。この要件が満たされない場合、xmlfmlappの実行時に権限の問題が発生します。
1.
次のコマンドを入力して、TUXCONFIGを作成します。
tmloadcf ubbsimple
構成のロード時には、この構成をインストールするかどうか、およびインストールする場合は既存の構成ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンド行で-yオプションを指定します。
2.
アプリケーションで必要なIPCリソースをOracle Tuxedoシステムで計算する場合は、コマンド行で-cオプションを指定します。
TUXCONFIGは、MASTERマシン上だけにインストールできます。アプリケーションの起動時にtmbootによってほかのマシンに伝播されます。
ロードする前にtmloadcfによってテキスト形式の構成ファイル(UBBCONFIG)が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
関連項目
『Oracle Tuxedoコマンド・リファレンス』tmloadcf(1)に関する項
xmlfmlappの実行
ここでは、xmlfmlappを起動し、様々な引数でクライアント・プログラムを実行してテストし、終了する手順について順に説明します。
ステップ1 : xmlfmlappの起動の準備
xmlfmlappを起動する前に、アプリケーションをサポートするのに十分なIPCリソースがマシンにあることを確認します。IPCリソースに関するレポートを出力するには、tmbootコマンドに-cオプションを指定します。
ステップ2 : xmlfmlappの起動
1.
環境を設定します。
../setenv.cmd
2.
次のコマンドを入力して、アプリケーションを起動します。
tmboot -y
必要であれば、構成の一部のサーバーだけを起動することもできます。たとえば、管理サーバーだけを起動するには、-Aオプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
関連項目
『Oracle Tuxedoコマンド・リファレンス』tmboot(1)に関する項
ステップ3 : xmlfmlappサービスのテスト
1.
システムにログインするたびに、xmlfmlappに環境変数を設定する必要があります。その場合、次のコマンドを入力します。
../setenv.cmd
2.
クライアント・プログラムを実行します。クライアント・プログラムを実行するには、次のコマンドを入力します。
stockclient stock_query_bea.xml
stockclient stock_query_msft.xml
stockclient stock_buy_bea.xml
stockclient stock_sell_msft.xml
ステップ4 : xmlfmlappの停止
xmlfmlappを終了するには、次のように、引数を指定せずに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