![]() |
![]() |
![]() |
![]() |
![]() |
STOCKAPPは、Oracle Tuxedoシステム・ソフトウェアに同梱されているサンプルATMI株式アプリケーションです。このアプリケーションでは、顧客の口座情報の確認および更新、株式またはファンド(あるいはその両方)の売買注文の実行という株式仲買業務機能を実行します。
注意: 表5-1では、STOCKAPPを構成するファイルを示しています。表にはOracle Tuxedoシステム・ソフトウェアに同梱されているソース・ファイル、株式アプリケーションのビルド時に生成されるファイル、および各ファイルの内容の概要が示されています。
• 図5-1では、STOCKAPPの階層を示しています。ユーザーは4つのサービス・リクエストの1つを選択します。図中の楕円形は、アプリケーション・サービスを表しています。型付きバッファは、Oracle Tuxedoシステムの主要部分です。Oracle Tuxedoシステムでは、型付きバッファは特定のデータ型を保持するように設計されています。VIEW、STRING、CARRAY、X_OCTET、X_COMMONおよびXMLの6つの型が定義されています。アプリケーションでは、追加の型を定義できます。これらのセクションには、BUY.cblでOracle Tuxedo ATMI関数が使用されるすべての場所が含まれています。csimpl.cblと同様に、BUY.cblでは、TPINITIALIZEを呼び出してアプリケーションに参加し、TPCALLを呼び出してサービスに対してRPCリクエストを行い、TPTERMを呼び出してアプリケーションを終了します。BUY.cblは、VIEW型付きレコードとcustファイルで定義されている構造体を使用するプログラムの例でもあります。構造体のソース・コードは、VIEW記述ファイルcust.Vにあります。クライアント・プログラム、BUY.cbl、FUNDPR.cbl、FUNDUP.cblおよびSELL.cblは、buildclient(1)により、コンパイルまたは必要なOracle Tuxedoライブラリとのリンク編集(あるいはその両方)のために処理されます。ATMIサーバーとは、1つ以上のサービスを提供する実行可能プロセスです。Oracle Tuxedoシステムでは、サーバーはクライアントとして動作するプロセスから継続的にリクエストを受け取り、それを適切なサービスにディスパッチします。サービスは、特にアプリケーション用に記述されたCOBOL言語コードのサブルーチンです。Oracle Tuxedoシステムのトランザクション処理アプリケーションの機能性は、これらのサービスがリソース・マネージャにアクセスすることによって実現されます。サービス・ルーチンは、Oracle Tuxedoシステム・プログラマによって作成する必要のあるアプリケーションの一部です(ユーザー定義のクライアントは、アプリケーションの別の部分)。
1.
3.
注意: #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 Tuxedoコマンド・リファレンス』のbuildserver(1)に関する項を参照してください。)BUYSELL ATMIサーバーは、BUYSR関数およびSELLSR関数のコードが含まれるファイルから導出されます。BUYSELLサーバーは、buildserverコマンドに指定する前に、まずBUYSELL.oファイルにコンパイルされ、コンパイル時のエラーを明確に特定し、このステップの前に処理できるようにします。
• -sオプションは、サーバーの起動時に通知されるサーバーのサービス名を指定します。サービスを実行する関数名がサービス名と異なる場合、関数名が-sオプションの引数の一部になります。STOCKAPPでは、関数名はサービス名と同じなので、サービス名のみを指定します。サービス名では、すべての文字列を大文字で指定します。ただし、buildserverの-sオプションでは、サーバー内のサービスを処理する関数には任意の名前を指定できます。詳細は、『Oracle Tuxedoコマンド・リファレンス』のbuildserver(1)に関する項を参照してください。システム管理者は、buildserverコマンドでサーバーを作成する際に使用されたサービスのサブセットのみをサーバーの起動時に利用できるように設定することもできます。詳細は、『Oracle Tuxedoアプリケーション実行時の管理』および『Oracle Tuxedoアプリケーションの設定』を参照してください。
• STOCKAPPサーバーをビルドする場合、buildserverコマンドの指定方法を理解していることが大切です。ただし、実際にビルドする場合、makefileにビルドの定義を記述することがよくあります。STOCKAPPでもその方法が採用されています。STOCKAPPには、すべてのスクリプトを実行可能にし、VIEW記述ファイルをバイナリ形式に変換し、アプリケーション・サーバーの作成に必要なすべてのプリコンパイル、コンパイルおよびビルドを行うmakefileが提供されています。また、最初からやりなおす場合にもこのファイルを利用できます。APPDIRパラメータの設定を考える必要がある場合もあります。STOCKAPPが提供されるとき、APPDIRはSTOCKAPPファイルが置かれているディレクトリに、TUXDIRに対して相対的に設定されています。STOCKAPP.mkの次のセクションでは、APPDIRの設定を定義し、説明しています。READMEファイルに従って、別のディレクトリにファイルをコピーした場合、APPDIRにはファイルのコピー先のディレクトリを指定します。makefileを実行すると、そのディレクトリにアプリケーションがビルドされます。STOCKAPP構成ファイルでは、一連のマシンでアプリケーションを実行する方法が定義されています。STOCKAPPは、UBBCONFIG(5)で記述されているテキスト形式の構成ファイルで提供されます。UBBCBSHMは、単一コンピュータでアプリケーションを定義します。#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
3. 一部のパラメータの値が山カッコ(<>)で囲まれています。山カッコで囲まれた値は、実際のインストールに適した値に置き換えます。これらのフィールドはすべて、ファイルのRESOURCES、MACHINESおよびGROUPSセクションにあります。表5-2では、山カッコで囲んだ文字列を置き換える値について説明しています。各stringには、適切な値を代入します。
• 『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』のUBBCONFIG(5)に関する項構成ファイルを編集したら、それをMASTERマシン上にバイナリ・ファイルとしてロードする必要があります。バイナリ形式の構成ファイルの名前はTUXCONFIG、そのパス名はTUXCONFIG環境変数に定義されています。このファイルは、Oracle Tuxedoのシステム管理者の有効なユーザーIDおよびグループIDを持つユーザーが作成し、この2つのIDは、ご使用の構成ファイルのUIDおよびGIDの値と同じであることが必要です。この要件が満たされない場合、STOCKAPPの実行時に権限の問題が発生します。構成のロード時には、この構成をインストールするかどうか、およびインストールする場合は既存の構成ファイルを上書きすることを確認するメッセージが何回か表示されます。このような確認を省くには、コマンド行で-yオプションを指定します。構成のオプションとしてSECURITYが指定されている場合、tmloadcfの実行時にアプリケーション・パスワードの入力が求められます。30文字までのパスワードを指定できます。アプリケーションに参加するクライアント・プロセスでは、パスワードを入力する必要があります。
• 『Oracle Tuxedoコマンド・リファレンス』のtmloadcf(1)に関する項
1. 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.Booting all admin and server processes in /usr/me/appdir/tuxconfig
Booting all admin processes
exec BBL -A:
process id=24223 Started.必要であれば、構成の一部のサーバーだけを起動することもできます。たとえば、管理サーバーだけを起動するには、-Aオプションを指定します。オプションが指定されていない場合は、アプリケーション全体が起動します。
• 『Oracle Tuxedoコマンド・リファレンス』のtmboot(1)に関する項
• 『Oracle Tuxedo ATMI COBOL関数リファレンス』のUSERLOG(3cbl)に関する項
• 『Oracle Tuxedoコマンド・リファレンス』のtmadmin(1)に関する項
• 『Oracle Tuxedoコマンド・リファレンス』のtmshutdown(1)に関する項