Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編) |
目次 索引 |
付録E サンプル(COBOL) |
COBOLを使用したサンプルプログラムの使用方法について説明します。サンプルプログラムはデータベース連携サービスのインストール先ディレクトリ配下の/src/samples/simple/cobolディレクトリに格納されているため、ユーザディレクトリに複写後、複写先の環境に合わせて修正して使用してください。なお、ここの例ではユーザディレクトリを/export/home/otsとします。
本サンプルは、サーバアプリケーションからOracleにアクセスします。
本サンプルのファイル構成を、以下に示します。
No |
ファイルの概要 |
ファイル名 |
---|---|---|
1 |
Makefile |
Makefile |
2 |
IDLファイル |
bankA.idl |
3 |
サーバアプリケーションソース |
bankA_s.cbl |
4 |
クライアントアプリケーションソース |
bankA_c.cbl |
5 |
プリコンパイラ用サーバアプリケーションソース |
bankA_s_dep.pco |
6 |
プリコンパイラ用サーバアプリケーションソース |
bankA_s_wit.pco |
1) OD_HOMEを設定します。
CORBAサービスのインストール先ディレクトリを設定します。以下の例のように設定します。
(設定例)
# OD_HOME=/opt/FSUNod <RETURN> # export OD_HOME <RETURN>
2) OTS_HOMEを設定します。
データベース連携サービスのインストール先ディレクトリを設定します。以下の例のように設定します。
(設定例)
# OTS_HOME=/opt/FSUNots <RETURN> # export OTS_HOME <RETURN>
3) COBOL登録集の格納場所を設定します。
(設定例)
# CORBA=/opt/FSUNod/include/COBOL <RETURN> # export CORBA <RETURN> # COSTRANSACTIONS=/opt/FSUNots/include/COBOL <RETURN> # export COSTRANSACTIONS <RETURN>
4) アプリケーションを作成します。
Makefileでサーバアプリケーションおよびクライアントアプリケーションをコンパイルします。
(実行例)
# make <RETURN>
なお、makeする場合にCORBAサービスおよびインタフェースリポジトリが起動されている必要があります。
makeすると、 bankA_s、bankA_c、libBANKA-ACCOUNTA.so、libbankA_bankA_accountA_skel.so、libbankA_cdr.soが作成されます。
なお、当操作はデータベース管理者のユーザ権限で行う必要があります。
5) サーバアプリケーション(bankA_s)をCORBAサービスのインプリメンテーションリポジトリに登録します。インプリメンテーションリポジトリへ登録するには、登録する内容を定義ファイル(テキストエディタ)を作成する必要があります。登録例を以下に示します。
rep_id にはサーバアプリのインプリメンテーションリポジトリID、dataにはRESOURCE:のあとにリソース定義名を指定する必要があります。
OD_impl_instコマンドは、定義ファイル名を指定して実行します。
(定義ファイル設定例)
rep_id = IDL:bankA/accountA:1.0 type = persistent proc_conc_init = 0 proc_conc_max = 32 thr_conc_init = 0 uid = 0 gid = 3 mode = SYNC_END env = LD_LIBRARY_PATH=/ora/ora815/cobol;$LD_LIBRARY_PATH IDL:bankA/accountA:1.0 = /export/home/ots/libBANKA-ACCOUNTA.so data = "RESOURCE:resource1"
(実行例)
# OD_impl_inst -ax deffile <RETURN>
deffileには定義ファイル名を指定します。
6) サーバアプリケーション(bankA_s)をCORBAサービスのネーミングサービスに登録します。
(実行例)
# OD_or_adm -c IDL:bankA/accountA:1.0 -n bankA::accountA <RETURN>
7) リソース管理プログラムを作成します。
otslinkrsc コマンドを使用し、リソース管理プログラムを作成します。
Oracle10gを使用している場合は、そのリソース管理プログラムを、データベース連携サービスのインストールディレクトリ配下の/program/rsc/fjotsrsc_ora10gとして提供していますので、それを使用してください。それ以外の場合は、リソース管理プログラムを作成するためのシェルとして、データベース連携サービスのインストールディレクトリ配下の/src/samples/env/oralinkrsc.shを提供していますので、使用するリソースマネージャ用に修正後、oralinkrsc.shを実行してください。リソース管理プログラムの名前はシェル内の NANE="name" に設定してください。( 例. NAME="run_rsc" )
なお、当操作はデータベース管理者のユーザ権限で行う必要があります。
(実行例)
# sh oralinkrsc.sh <RETURN>
8) リソース定義ファイルを作成します。
リソース定義ファイルはテキストエディタで作成します。
OPENINFO には、データベースのユーザ名、パスワードを指定します。(例. orauser/dbuser など)
NAMEには、インプリメンテーションリポジトリに登録する際にdata行で指定した"RESOURCE:"のあとの名前を記述してください。
(設定例)
ENVIRON ORACLE_SID=ORCL ENVIRON ORACLE_HOME=/oracle/product/10.2.0 ENVIRON LD_LIBRARY_PATH=/oracle/product/10.2.0/lib NAME=resource1 RMNAME=Oracle_XA OPENINFO=Oracle_XA+Acc=P/orauser/dbuser+SesTm=0 CLOSEINFO=
9) リソース管理プログラムをCORBAサービスのインプリメンテーションリポジトリに登録します。
リソース管理プログラムの登録はotssetrscコマンドにより行います。
(実行例)
# otssetrsc -a -rf /export/home/ots/run_rscdef -u ora803 -g dbuser <RETURN>
-rfには、リソース定義ファイル名をフルパスで指定してください。
-uにはデータベースを使用するユーザ名、-gにはデータベースを使用するグループ名を指定してください。
10) データベースにテーブルを作成します。
sqlplusコマンドでテーブルを作成します。ここでは、テーブル作成のシェル(データベース連携サービスのインストール先ディレクトリ配下/src/samples/simple/c/a_account.sql)を使用し作成する例を示します。
なお、当操作はデータベース管理者のユーザ権限で行う必要があります。
(実行例)
# sqlplus orauser/dbuser @a_account.sql <RETURN>
作成されたテーブルの内容を確認するには、以下のようにsqlplusコマンドを使用します。
(実行例)
# sqlplus orauser/dbuser <RETURN>
SQL> select * from a_account; <RETURN>
ACCOUNTNO NAME BALANCE
------------------- ---------------- ---------------------
1 SEAN 11111
2 LEHR 22222
3 JUDITH 33333
4 FRANCIS 44444
5 ALASTAIR 55555
6 AREX 66666
7 MOIRA 77777
11) OTSシステム、リソース管理プログラムおよびサーバアプリケーションを起動します。
(実行例)
# otsstart <RETURN> # otsstartrsc otsstartrsc -pg /export/home/ots/run_rsc -n resource1 <RETURN> # bankA_s & <RETURN>
注意)
サーバアプリケーションを起動する前には、CORBAサービスのインストールディレクトリ配下の/lib/ntを、CORBAサービスのインストールディレクトリ配下の/libより先に指定してください。
ただし、OTSシステムやリソース管理プログラム起動時には、スレッド版のlibOM.soを使用してください。
12) クライアントアプリケーションを起動します。
(実行例)
# bankA_c <RETURN>
13) クライアントアプリケーションから入力を促してくるので実行します。
Start program ? Yes(y) No(n) # y <RETURN> ----- What's request number ----- 1:begin 2:commit 3:rollback 4:rollback_only 5:get_status 6:get_transaction_name 7:settimeout 8:Call ServerApplication 0:exit 1 <RETURN> [1を入力するとbeginが実行] 8 <RETURN> [8を入力するとサーバのメソッドが実行] ** ServerApplication ** Please input account number 5 <RETURN> [番号を入力] How much do you deposit ? 200000 <RETURN>[番号5の社員に給与を入力] 2 <RETURN> [2を入力するとcommitが実行] 0 <RETURN> [クライアントアプリケーションの終了]
目次 索引 |