ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(データベース連携サービス編)

C.2 CORBAアプリケーション(SolarisおよびLinuxの場合)

  C言語を使用したサンプルプログラムの使用方法について説明します。

  ユーザディレクトリにサンプルプログラムを複写後、複写先の環境に応じて修正して使用してください。ここでは、ユーザディレクトリを“/export/home/ots”とします。


■サンプルプログラムの格納パス

/opt/FSUNots/src/samples/simple/c

/opt/FJSVots/src/samples/simple/c

注)本製品のインストールパスがデフォルトの場合のパスです。


サンプルプログラムの概要

  本サンプルは、サーバアプリケーションからOracleにアクセスします。
  本サンプルのファイル構成を以下に示します。


No

ファイルの概要

ファイル名

1

Makefile

Makefile

2

IDLファイル

bankA.idl

3

サーバアプリケーションソース

bankA_s.pc

4

クライアントアプリケーションソース

bankA_c.c

5

テーブル作成シェル

a_account.sql


作業手順

1) 環境変数OTS_HOMEに、データベース連携サービスのインストール先ディレクトリを設定します。

設定例)

# OTS_HOME=/opt/FSUNots <RETURN>
# export OTS_HOME <RETURN>

# OTS_HOME=/opt/FJSVots <RETURN>
# export OTS_HOME <RETURN>

2) otslinkrsc コマンドで、リソース管理プログラムを作成します。
  Oracle用リソース管理プログラムは、データベース連携サービスのインストールディレクトリ配下の/program/rsc/に標準提供していますので、それを使用してください。それ以外の場合は、リソース管理プログラムを作成するためのシェルとして、データベース連携サービスのインストール先ディレクトリ配下の/src/samples/env/oralinkrsc.shを提供していますので、使用するリソースマネージャ用に修正後、oralinkrsc.shを実行してください。
  リソース管理プログラムの名前は、シェル内の NANE="name" に設定してください(例: NAME="run_rsc")。
  本操作は、データベース管理者のユーザ権限で行う必要があります。

実行例)

% sh oralinkrsc.sh  <RETURN>

3) アプリケーションを作成します。
  Makefileで、サーバアプリケーションおよびクライアントアプリケーションをコンパイルします。

実行例)

% make <RETURN>

  makeする場合、CORBAサービスおよびインタフェースリポジトリが起動されている必要があります。
  makeすると、 bankA_sおよびbankA_cが作成されます。
  なお、本操作はデータベース管理者のユーザ権限で行う必要があります。


4) サーバアプリケーション(bankA_s)をCORBAサービスのインプリメンテーションリポジトリに登録します。
  インプリメンテーションリポジトリへ登録するには、登録する内容を定義ファイル(テキストエディタ)を作成する必要があります。
  登録例を以下に示します。rep_idには、サーバアプリケーションのインプリメンテーションリポジトリIDを指定します。dataには、“RESOURCE:”のあとにリソース定義名を指定します。
  OD_impl_instコマンドは、定義ファイル名を指定して実行します。

定義ファイルの設定例)

rep_id         = IDL:bankA/accountA:1.0
type           = persistent
proc_conc_max  = 32
thr_conc_init  = 0
uid            = 0
gid            = 3
mode           = SYNC_END
env            = LD_LIBRARY_PATH=/opt/FSUNots/lib;/opt/FSUNod/lib/nt;OTS_HOME=/opt/FSUNots
data           = "RESOURCE:resource1"

実行例)

% OD_impl_inst -ax  deffile <RETURN>

deffile:定義ファイル名


5) サーバアプリケーション(bankA_s)をCORBAサービスのネーミングサービスに登録します。

実行例)

% OD_or_adm -c  IDL:bankA/accountA:1.0 -n bankA::accountA <RETURN>

6) テキストエディタで、リソース定義ファイルを作成します。
  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=

7) otssetrscコマンドで、CORBAサービスのインプリメンテーションリポジトリにリソース管理プログラムを登録します。

実行例)

% otssetrsc -a -rf /export/home/ots/run_rscdef -u orauser -g dbuser <RETURN>

  -rfオプション:リソース定義ファイル名(フルパス)
  -uオプション:データベースを使用するユーザ名
  -gオプション:データベースを使用するグループ名


8) sqlplusコマンドで、データベースにテーブルを作成します。
  ここでは、テーブル作成のシェル(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

9) OTSシステム、リソース管理プログラム、およびサーバアプリケーションを起動します。

実行例)

# otsstart  <RETURN>
# otsstartrsc -pg /export/home/ots/run_rsc -n resource1 <RETURN>
# bankA_s & <RETURN>

注意

  プロセスモードのサーバアプリケーションを起動する前には、“CORBAサービスのインストールディレクトリ/lib/nt”を“CORBAサービスのインストールディレクトリ/lib”より前に指定してください。
  ただし、OTSシステム起動時は、スレッド版のlibOM.soを使用してください。


10) クライアントアプリケーションを起動します。

実行例)

# bankA_c <RETURN>

11) クライアントアプリケーションから入力を促してくるので、実行します。

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>     [クライアントアプリケーションを終了します。]