サンプルを使用した Oracle Tuxedo アプリケーションの開発方法

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

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

ここでは、以下の内容について説明します。

 


xmlfmlapp とは

xmlfmlapp は、クライアント要求を使用して株式を照会および売買するサンプル ATMI 株式アプリケーションです。このアプリケーションでは、3 つのサービス「QUERY」、「BUY」、および「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 から 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 のファイルについて

xmlfmlapp アプリケーションを構成するファイルは、samples/atmi/xmlfmlapp ディレクトリに置かれています。xmlfmlapp ディレクトリには、次のファイルが置かれています。

xmlfmlapp クライアントの検証

Oracle Tuxedo システムの ATMI クライアント/サーバ アーキテクチャでは、通信に次の 2 つのモードがあります。

xmlfmlapp では、以下の 3 つのサービスを使用して要求/応答モードを実装します。

要求/応答クライアント

stockclient.c は、指定された XML ファイルからの入力を使用するクライアント プログラムです。QUERYBUY、および SELL サービスを呼び出し、実行結果を返します。このプログラムは、次のように実行可能プログラムとして呼び出します。

関連項目

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 が設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。
  2. TUXDIR: パラメータが null か、設定されていません。
  3. TUXDIR パラメータに Oracle Tuxedo システムのディレクトリ構造でのルート ディレクトリを設定し、エクスポートします。
  4. APPDIR{TUXDIR}/samples/atmi/xmlfmlapp ディレクトリに設定します。これは、xmlfmlapp のソース ファイルが置かれたディレクトリです。APPDIR は、Oracle Tuxedo システムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース ファイルを上書きしないように xmlfmlapp ファイルを別のディレクトリにコピーした場合は、そのディレクトリを入力します。TUXDIR の下位ディレクトリである必要はありません。
  5. 環境変数ファイルに必要な変更を加えたら、次のように実行します。
  6. . ./setenv.cmd

    setenv.cmd は、Windows 用の実行可能ファイルです。Unix システムの場合は setenv.sh を使用します。

そのほかの要件

HP-UX と AIX の場合を除いて、LD_LIBRARY_PATH には、共有ライブラリを使用するシステムの $TUXDIR/lib が含まれている必要があります。

ステップ 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 $"

# 簡単な 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> を適切な値に置き換えます。

関連項目

ステップ 6 : バイナリ形式のコンフィグレーション ファイルの作成

バイナリ形式のコンフィグレーション ファイルを作成する場合、xmlfmlapp ファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。

  1. xmlfmlapp ファイルが置かれたディレクトリに移動します。
  2. 次のコマンドを入力して、環境変数を設定します。
  3. . ./setenv.cmd

    setenv.cmd は、Windows 用の実行可能ファイルです。Unix システムの場合は setenv.sh を使用します。

コンフィグレーション ファイルのロード

コンフィグレーション ファイルを編集したら、それを MASTER マシン上にバイナリ ファイルとしてロードする必要があります。バイナリ形式のコンフィグレーション ファイルの名前は TUXCONFIG、そのパス名は TUXCONFIG 環境変数に定義されています。このファイルは、Oracle Tuxedo のシステム管理者の有効なユーザ ID およびグループ ID を持つユーザが作成します。この 2 つの ID は、ご使用のコンフィグレーション ファイルの UID および GID の値と同じであることが必要です。同じではない場合、xmlfmlapp の実行時にパーミッションの問題が発生します。

  1. 次のコマンドを入力して、TUXCONFIG を作成します。
  2.     tmloadcf ubbsimple

    コンフィグレーションのロード時には、このコンフィグレーションをインストールするかどうか、およびインストールする場合は既存のコンフィグレーション ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンドラインで -y オプションを指定します。

  3. アプリケーションで必要な IPC リソースを Oracle Tuxedo システムで計算する場合は、コマンドラインで -c オプションを指定します。
  4. TUXCONFIG は、MASTER マシン上だけにインストールできます。アプリケーションの起動時に tmboot によってほかのマシンに伝播されます。

    ロードする前に tmloadcf によってテキスト形式のコンフィグレーション ファイル (UBBCONFIG) が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。

関連項目

 


xmlfmlapp の実行

ここでは、xmlfmlapp を起動し、さまざまな引数でクライアント プログラムを実行してテストし、終了する手順について順に説明します。

ステップ 1 : xmlfmlapp の起動の準備

xmlfmlapp を起動する前に、アプリケーションをサポートするのに十分な IPC リソースがマシンにあることを確認します。IPC リソースに関するレポートを出力するには、tmboot コマンドに -c オプションを指定します。

ステップ 2 : xmlfmlapp の起動

  1. 環境変数を設定します。
  2. ../setenv.cmd
  3. 次のコマンドを入力して、アプリケーションを起動します。
  4.     tmboot -y

必要に応じて、コンフィグレーションの一部のサーバだけを起動することもできます。たとえば、管理サーバだけを起動するには、-A オプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。

関連項目

ステップ 3 : xmlfmlapp サービスのテスト

  1. システムにログインするたびに、xmlfmlapp に環境変数を設定する必要があります。その場合、次のコマンドを入力します。
  2. ../setenv.cmd
  3. クライアント プログラムを実行します。クライアント プログラムを実行するには、以下のコマンドを入力します。
  4. 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 の停止コマンド) を実行すると、次のタスクが行われます。

関連項目


  ページの先頭       前  次