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