Oracle Tuxedo ATMIアプリケーション開発のためのチュートリアル

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

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ディレクトリには次のファイルが含まれています。

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: parameter null or not set
  3. TUXDIRパラメータにOracle Tuxedoシステムのディレクトリ構造でのルート・ディレクトリを設定し、エクスポートします。
  4. APPDIRを、xmlfmlappのソース・ファイルが置かれた{TUXDIR}/samples/atmi/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 $"

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

関連項目

ステップ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の停止コマンド)を実行すると、次のタスクが行われます。

関連項目


  先頭に戻る       前  次