|
STOCKAPPは、Oracle Tuxedoシステム・ソフトウェアに同梱されているサンプルATMI株式アプリケーションです。このアプリケーションでは、顧客の口座情報の確認および更新、株式またはファンド(あるいはその両方)の売買注文の実行という株式仲買業務機能を実行します。
このドキュメントでは、STOCKAPPアプリケーションを開発するための手順を順に示します。このチュートリアルでSTOCKAPPの開発を経験すると、独自のアプリケーションを開発できるようになります。
STOCKAPPチュートリアルは、次の3つの項から構成されています。
| 注: | ここで説明する内容は、アプリケーションの開発、管理、プログラミングに経験のあるシステム・ユーザーを対象としています。また、Oracle Tuxedoシステム・ソフトウェアについて理解していることを前提としています。Oracle Tuxedoアプリケーションをビルドするには、開発ライセンスが必要です。 |
ここでは、STOCKAPPアプリケーションを構成するファイル、クライアントおよびサービスについて説明します。それぞれの詳細は、次のアクティビティのいずれかをクリックしてください。
STOCKAPPアプリケーションを構成するファイルは、次のような位置にあるSTOCKAPPディレクトリに置かれています。

STOCKAPPディレクトリには、次のファイルが置かれています。
表5-1では、STOCKAPPを構成するファイルを示しています。表にはOracle Tuxedoシステム・ソフトウェアに同梱されているソース・ファイル、株式アプリケーションのビルド時に生成されるファイル、および各ファイルの内容の概要が示されています。
Oracle TuxedoシステムのATMIクライアント/サーバー・アーキテクチャでは、通信に次の2つのモードがあります。
図5-1では、STOCKAPPの階層を示しています。ユーザーは4つのサービス・リクエストの1つを選択します。図中の楕円形は、アプリケーション・サービスを表しています。

型付きバッファは、Oracle Tuxedoシステムの主要部分です。Oracle Tuxedoシステムでは、型付きバッファは特定のデータ型を保持するように設計されています。VIEW、STRING、CARRAY、X_OCTET、X_COMMONおよびXMLの6つの型が定義されています。アプリケーションでは、追加の型を定義できます。
BUYは、クライアント・プログラムの例です。BUYSRサービスを呼び出す口座の問合せを行います。これは、次のように実行可能プログラムとして呼び出されます:
BUY
* Now register the client with the system
* Issue a TPCALL
* Clean up
これらのセクションには、BUY.cblでOracle Tuxedo ATMI関数が使用されるすべての場所が含まれています。csimpl.cblと同様に、BUY.cblでは、TPINITIALIZEを呼び出してアプリケーションに参加し、TPCALLを呼び出してサービスに対してRPCリクエストを行い、TPTERMを呼び出してアプリケーションを終了します。BUY.cblは、VIEW型付きレコードとcustファイルで定義されている構造体を使用するプログラムの例でもあります。構造体のソース・コードは、VIEW記述ファイルcust.Vにあります。
VIEW記述ファイル(その例がcust)は、ビュー・コンパイラviewc(1)で処理されます。view(c)を実行して、ビューをコンパイルします。
viewc-C-n
cust.v
viewcには、COBOLファイル(CUST.cbl)、バイナリVIEW記述ファイル(cust.V)およびヘッダー・ファイル(cust.h)の3つの出力ファイルがあります。
クライアント・プログラム、BUY.cbl、FUNDPR.cbl、FUNDUP.cblおよびSELL.cblは、buildclient(1)により、コンパイルまたは必要なOracle Tuxedoライブラリとのリンク編集(あるいはその両方)のために処理されます。
選択すれば、これらのコマンドを個別に使用することもできますが、これらすべての手順の規則はSTOCKAPP.mkに含まれています。
ATMIサーバーとは、1つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedoシステムでは、サーバーはクライアントとして動作するプロセスから継続的にリクエストを受け取り、それを適切なサービスにディスパッチします。サービスは、特にアプリケーション用に記述されたCOBOL言語コードのサブルーチンです。Oracle Tuxedoシステムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース・マネージャにアクセスすることによって実現されます。サービス・ルーチンは、Oracle Tuxedoシステム・プログラマによって作成する必要のあるアプリケーションの一部です(ユーザー定義のクライアントは、アプリケーションの別の部分)。
すべてのSTOCKAPPサービスでは、アプリケーション・トランザクション・モニター・インタフェース(ATMI)の機能を使用して、次のタスクを実行します。
STOCKAPPには4つのサービスがあります。各STOCKAPPサービスは、次のリストに示すように、サーバーのソース・コードのCOBOL関数名と一致します。
BUYSR
SELLSR
FUNDPRSR
FUNDUPSR
ここでは、STOCKAPPを実行するために必要なファイルやその他のリソースを作成するために完了する必要のあるの手順を順に示します。
STOCKAPPに必要な環境変数は、STKVARファイルで定義されています。ファイルには多数のコメントが含まれているため大きくなります(約100行)。
STKVARファイルをよく理解します。9行目では、TUXDIRが設定されていることを確認します。設定されていない場合、ファイルの実行が失敗して、次のメッセージが表示されます。 TUXDIR: parameter null or not set
TUXDIRパラメータにOracle Tuxedoシステムのディレクトリ構造でのルート・ディレクトリを設定し、エクスポートします。STKVARの別の行で、APPDIRに{TUXDIR}/samples/atmi/STOCKAPPディレクトリが設定されています。これは、STOCKAPPのソース・ファイルが置かれたディレクトリです。APPDIRは、Oracle Tuxedoシステムによって、アプリケーション固有のファイルが検索されるディレクトリです。オリジナルのソース・ファイルを上書きしないように、STOCKAPPファイルを別のディレクトリにコピーできます。その場合は、そのディレクトリをそこに入力します。TUXDIRの下位ディレクトリである必要はありません。| 注: | STKVARで指定されるほかの変数は、サンプル・アプリケーションで各種の働きをします。独自のアプリケーションを開発する場合は、それらの働きについて認識しておくことが必要です。それらをSTKVARに含めることで、後で実際のアプリケーションのテンプレートとして使用できます。 |
STKVARに必要な変更を加えたら、次のようにSTKVARを実行します。. ./STKVAR
#ident "@(#)samples/atmi:STOCKAPP/STKVAR
#
# This file sets all the environment variables needed by the TUXEDO software
# to run the STOCKAPP
#
# This directory contains all the TUXEDO software
# System administrator must set this variable
#
TUXDIR=${TUXDIR:?}
#
# This directory contains all the user written code
#
# Contains the full path name of the directory that the application
# generator should place the files it creates
#
APPDIR=${HOME}/STOCKAPP
#
# Environment file to be used by tmloadcf
#
COBDIR=${COBDIR:?}
#
# This directory contains the cobol files needed
# for compiling and linking.
#
LD_LIBRARY_PATH=$COBDIR/coblib:${LD_LIBRARY_PATH}
#
# Add coblib to LD_LIBRARY_PATH
#
ENVFILE=${APPDIR}/ENVFILE
#
# List of field table files to be used by CBLVIEWC, tmloadcf, etc.
#
FIELDTBLS=fields,Usysflds
#
# List of directories to search to find field table files
#
FLDTBLDIR=${TUXDIR}/udataobj:${APPDIR}
#
# Set device for the transaction log; this should match the TLOGDEVICE
# parameter under this site's LMID in the *MACHINES section of the
# UBBCBSHM file
#
TLOGDEVICE=${APPDIR}/TLOG
#
# Device for the configuration file
#
UBBCBSHM=$APPDIR/UBBCBSHM
#
# Device for binary file that gives /T all its information
#
TUXCONFIG=${APPDIR}/TUXCONFIG
#
# Set the prefix of the file which is to contain the central user log;
# this should match the ULOGPFX parameter under this site's LMID in the
# *MACHINES section of the UBBCONFIG file
#
ULOGPFX=${APPDIR}/ULOG
#
# List of directories to search to find view files
#
VIEWDIR=${APPDIR}
#
# List of view files to be used by CBLVIEWC, tmloadcf, etc.
#
VIEWFILES=quote.V,cust.V
#
# Set the COBCPY
#
COBCPY=$TUXDIR/cobinclude
#
# Set the COBOPT
#
COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"
#
# Set the CFLAGS
#
CFLAGS="-I$TUXDIR/include -I$TUXDIR/sysinclude"
#
# Export all variables just set
#
export TUXDIR APPDIR ENVFILE
export FIELDTBLS FLDTBLDIR TLOGDEVICE
export UBBCBSHM TUXCONFIG ULOGPFX LD_LIBRARY_PATH
export VIEWDIR VIEWFILES COBDIR COBCPY COBOPT CFLAGS
#
# Add TUXDIR/bin to PATH if not already there
#
a="`echo $PATH | grep ${TUXDIR}/bin`"
if [ x"$a" = x ]
then
PATH=${TUXDIR}/bin:${PATH}
export PATH
fi
#
# Add APPDIR to PATH if not already there
#
a="`echo $PATH | grep ${APPDIR}`"
if [ x"$a" = x ]
then
PATH=${PATH}:${APPDIR}
export PATH
fi
#
# Add COBDIR to PATH if not already there
#
a="`echo $PATH | grep ${COBDIR}`"
if [ x"$a" = x ]
then
PATH=${PATH}:${COBDIR}
export PATH
fi
実行可能なATMIサーバーをビルドするには、buildserverを使用します。このコマンドではオプションを使用して、出力ファイル、アプリケーションで提供される入力ファイル、各種の方法でOracle Tuxedoシステム・アプリケーションを実行するためのライブラリを指定します。
buildserverに-Cオプションを指定して、cobccコマンドを起動します。環境変数ALTCCおよびALTCFLAGSを設定して、かわりのコンパイル・コマンドを指定し、コンパイルおよびリンク編集時にフラグを設定します。主要なbuildserverコマンド行オプションは、後述の例で説明されています。
buildserverコマンドはSTOCKAPP.mkで使用され、株式アプリケーションの各サーバーをコンパイルしてビルドします。(詳細は、『Oracle Oracle Tuxedoコマンド・リファレンス』の「buildserver(1)」を参照してください。)
BUYSELL ATMIサーバーは、BUYSR関数およびSELLSR関数のコードが含まれるファイルから導出されます。BUYSELLサーバーは、buildserverコマンドに指定する前に、まずBUYSELL.oファイルにコンパイルされ、コンパイル時のエラーを明確に特定し、このステップの前に処理できるようにします。
BUYSELL.oファイルを作成します(STOCKAPP.mkで実行)。その後にBUYSELLサーバーのビルドに使用したbuildserverコマンドが続きます。 buildserver -C -v -o BUYSELL -s SELLSR -f SELLSR.cbl -s BUYSR -f BUYSR.cbl
-Cオプションは、COBOLモジュールを持つサーバーをビルドする場合に使用します。-vオプションは、冗長モードを指定します。ccコマンドを標準出力に書き込みます。-oオプションは、実行可能出力ファイルに名前を指定する場合に使用します。名前が指定されていない場合は、SERVERという名前が付きます。-sオプションは、サーバーの起動時に通知されるサーバーのサービス名を指定します。サービスを実行する関数名がサービス名と異なる場合、関数名が-sオプションの引数の一部になります。STOCKAPPでは、関数名はサービス名と同じなので、サービス名のみを指定します。サービス名では、すべての文字列を大文字で指定します。ただし、buildserverの-sオプションでは、サーバー内のサービスを処理する関数には任意の名前を指定できます。詳細は、『Oracle Tuxedoコマンド・リファレンス』の「buildserver(1)」を参照してください。システム管理者は、buildserverコマンドでサーバーを作成する際に使用されたサービスのサブセットのみをサーバーの起動時に利用できるように設定することもできます。詳細は、『Oracle Tuxedoアプリケーション実行時の管理』および『Oracle Tuxedoアプリケーションの設定』を参照してください。-fオプションは、リンク編集時に使用されるファイルを指定します。buildserverリファレンス・ページの-lオプションも参照してください。これら2つのオプションの詳細は、COBOLを使用したOracle Tuxedo ATMIアプリケーションのプログラミングの「サーバーのビルド」を参照してください。ファイルがリストされる順序には意味があります。この順序は、関数の参照、およびその参照がどのライブラリで解決されるかによって決まります。ソース・モジュールは、それらの参照を解決するために使用されるライブラリの前にリストされます。これらが.cblファイルの場合、最初にコンパイルされます。オブジェクト・ファイルは、別個の.oファイル、またはアーカイブ(.a)ファイルにあるファイル・グループです。-fの引数として1つ以上のファイル名を指定する場合は、二重引用符でファイル名のリストを囲む必要があります。-fオプションは、必要な数だけ使用できます。-sオプションは、BUYSELLサーバーを構成するサービスとしてSELLSRおよびBUYSRサービスを指定します。-oオプションは実行可能出力ファイルにBUYSELLという名前を付け、-fオプションはSELLSR.cblおよびBUYSR.cblファイルがビルドでのリンク編集時に使用されるように指定します。 STOCKAPPサーバーをビルドする場合、buildserverコマンドの指定方法を理解していることが大切です。ただし、実際にビルドする場合、makefileにビルドの定義を記述することがよくあります。STOCKAPPでもその方法が採用されています。
STOCKAPPには、すべてのスクリプトを実行可能にし、VIEW記述ファイルをバイナリ形式に変換し、アプリケーション・サーバーの作成に必要なすべてのプリコンパイル、コンパイルおよびビルドを行うmakefileが提供されています。また、最初からやりなおす場合にもこのファイルを利用できます。
提供されているSTOCKAPP.mkには、いくつか編集した方がよいフィールドがあり、説明が必要なフィールドもあります。
STOCKAPP.mkの次のコメントとTUXDIRパラメータに移動します。
#
# Root directory of TUXEDO System. This file must either be edited to set
# this value correctly, or the correct value must be passed via "make -f
# STOCKAPP.mk TUXDIR=/correct/rootdir", or the build of STOCKAPP will fail.
#
TUXDIR=../..
TUXDIRパラメータを、Oracle Tuxedoシステム・インストールのルート・ディレクトリの絶対パス名に設定します。
APPDIRパラメータの設定を考える必要がある場合もあります。STOCKAPPが提供されるとき、APPDIRはSTOCKAPPファイルが置かれているディレクトリに、TUXDIRに対して相対的に設定されています。STOCKAPP.mkの次のセクションでは、APPDIRの設定を定義し、説明しています。
#
# Directory where the STOCKAPP application source and executables live.
# This file must either be edited to set this value correctly, or the
# correct value must be passed via "make -f STOCKAPP.mk
# APPDIR=/correct/appdir", or the build of STOCKAPP will fail.
#
APPDIR=$(TUXDIR)/samples/atmi/STOCKAPP
#
READMEファイルに従って、別のディレクトリにファイルをコピーした場合、APPDIRにはファイルのコピー先のディレクトリを指定します。makefileを実行すると、そのディレクトリにアプリケーションがビルドされます。
STOCKAPP構成ファイルでは、一連のマシンでアプリケーションを実行する方法が定義されています。STOCKAPPは、UBBCONFIG(5)で記述されているテキスト形式の構成ファイルで提供されます。UBBCBSHMは、単一コンピュータでアプリケーションを定義します。
STOCKAPPの構成ファイルの内容を確認します。#Copyright (c) 1992 Unix System Laboratories, Inc.
#All rights reserved
#Skeleton UBBCONFIG file for the TUXEDO COBOL Sample Application.
*RESOURCES
IPCKEY 5226164
DOMAINID STOCKAPP
001 UID <user id from id(1)>
002 GID <group id from id(1)>
MASTER SITE1
PERM 0660
MAXACCESSERS 20
MAXSERVERS 15
MAXSERVICES 30
MODEL SHM
LDBAL Y
MAXGTT 100
MAXBUFTYPE 16
MAXBUFSTYPE 32
SCANUNIT 10
SANITYSCAN 12
DBBLWAIT 6
BBLQUERY 180
BLOCKTIME 10
TAGENT “TAGENT"
#
*MACHINES
003 <SITE1's uname> LMID=SITE1
004 TUXDIR="<TUXDIR1>"
005 APPDIR="<APPDIR1>"
ENVFILE="<APPDIR1>/ENVFILE"
TUXCONFIG="<APPDIR1>/TUXCONFIG"
TUXOFFSET=0
006 TYPE="<machine type>"
ULOGPFX="<APPDIR>/ULOG"
MAXWSCLIENTS=5
#
*GROUPS
COBAPI LMID=SITE1 GRPNO=1
#
#
*SERVERS
FUNDUPSR SRVGRP=COBAPI SRVID=1 CONV=Y ENVFILE="<APPDIR1>/ENVFILE"
FUNDPRSR SRVGRP=COBAPI SRVID=2 ENVFILE="<APPDIR1>/ENVFILE"
BUYSELL SRVGRP=COBAPI SRVID=3 ENVFILE="<APPDIR1>/ENVFILE"
#
#
*SERVICES
UBBCBSHMのRESOURCESセクションに次の行を追加します。SECURITY APP_PW
RESOURCES、MACHINESおよびGROUPSセクションにあります。表5-2では、山カッコで囲んだ文字列を置き換える値について説明しています。各stringには、適切な値を代入します。
バイナリ形式の構成ファイルを作成する前に、STOCKAPPファイルが置かれたディレクトリに移動し、環境変数を設定することが必要です。その場合、次の手順に従います。
構成ファイルを編集したら、それをMASTERマシン上にバイナリ・ファイルとしてロードする必要があります。バイナリ形式の構成ファイルの名前はTUXCONFIG、そのパス名はTUXCONFIG環境変数に定義されています。このファイルは、Oracle Tuxedoのシステム管理者の有効なユーザーIDおよびグループIDを持つユーザーが作成し、この2つのIDは、ご使用の構成ファイルのUIDおよびGIDの値と同じであることが必要です。この要件が満たされない場合、STOCKAPPの実行時に権限の問題が発生します。
TUXCONFIGを作成します。 tmloadcf UBBCBSHM 構成のロード時には、この構成をインストールするかどうか、およびインストールする場合は既存の構成ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンド行で-yオプションを指定します。
-cオプションを指定します。 TUXCONFIGは、MASTERマシン上だけにインストールできます。アプリケーションの起動時にtmbootによってほかのマシンに伝播されます。
構成のオプションとしてSECURITYが指定されている場合、tmloadcfの実行時にアプリケーション・パスワードの入力が求められます。30文字までのパスワードを指定できます。アプリケーションに参加するクライアント・プロセスでは、パスワードを入力する必要があります。
ロードする前にtmloadcfによってテキスト形式の構成ファイル(UBBCONFIG)が解析されます。構文エラーが検出された場合、ファイルのロードは失敗します。
ここでは、STOCKAPPを起動し、各種のクライアント・プログラムとトランザクションを行ってテストし、終了する手順について順に説明します。
STOCKAPPを起動する前に、アプリケーションをサポートするのに十分なIPCリソースがマシンにあることを確認します。IPCリソースに関するレポートを出力するには、tmbootコマンドに-cオプションを指定します。 Ipc sizing (minimum /T values only)
Fixed Minimums Per Processor
SHMMIN: 1
SHMALL: 1
SEMMAP: SEMMNI
Variable Minimums Per Processor
SEMUME, A SHMMAX
SEMMNU, * *
Node SEMMNS SEMMSL SEMMSL SEMMNI MSGMNI MSGMAP SHMSEG
------ ------ ------ ------ ------ ------ ------ ------
machine 1 60 1 60 A + 1 10 20 76K
machine 2 63 5 63 A + 1 11 22 76K
where 1 <= A <= 8.
MSGMNI値に追加します。MSGMAPはMSGMNIの2倍にします。
このレポートは、構成内のすべてのサーバーが起動するまで出力されます。起動したサーバーの合計数が出力された時点でレポートは終了します。
必要であれば、構成の一部のサーバーだけを起動することもできます。たとえば、管理サーバーだけを起動するには、-Aオプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
tmbootでは、起動したサーバー数がレポートされるほかに、ULOGにメッセージが送信されます。
STOCKAPPを終了するには、次のように、引数を指定せずにtmshutdown(1)コマンドをMASTERマシンで入力します。
tmshutdown
このコマンド(またはtmadminの停止コマンド)を実行すると、次のタスクが行われます。
|