Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編)
目次 索引 前ページ次ページ

付録C サンプル(C言語)

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

 C言語を使用したサンプルプログラムの使用方法について説明します。サンプルプログラムはデータベース連携サービスのインストール先ディレクトリ配下の/src/samples/simple/cディレクトリに格納されているため、ユーザディレクトリに複写後、複写先の環境に合わせて修正して使用してください。なお、ここの例ではユーザディレクトリを/export/home/otsとします。

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

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

No

ファイルの概要

ファイル名

1

Makefile

Makefile

2

IDLファイル

bankA.idl

3

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

bankA_s.pc

4

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

bankA_c.c

5

テーブル作成シェル

a_account.sql

作業手順

1) OD_HOMEを設定します。
 CORBAサービスのインストール先ディレクトリを設定します。以下の例のように設定します。

(設定例)

  # OD_HOME=/opt/FSUNod <RETURN>
  # export OD_HOME <RETURN>

  # OD_HOME=/opt/FJSVod <RETURN>
  # export OD_HOME <RETURN>

2) OTS_HOMEを設定します。
 データベース連携サービスのインストール先ディレクトリを設定します。以下の例のように設定します。

(設定例)

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

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

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

(例: NAME="run_rsc" )

 当操作はデータベース管理者のユーザ権限で行う必要があります。

(実行例)

  % sh oralinkrsc.sh  <RETURN>

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

(実行例)

  % make <RETURN>

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

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=/opt/FSUNots/lib;/opt/FSUNod/lib/nt;OTS_HOME=/opt/FSUNots
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) リソース定義ファイルを作成します。
 リソース定義ファイルはテキストエディタで作成します。
 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=

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

(実行例)

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

 -rfには、リソース定義ファイル名をフルパスで指定してください。
 -uにはデータベースを使用するユーザ名、-gにはデータベースを使用するグループ名を指定してください。

9) データベースにテーブルを作成します。
 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

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

(実行例)

  # otsstart  <RETURN>
  # otsstartrsc -pg /export/home/ots/run_rsc -n resource1 <RETURN>
  # bankA_s & <RETURN>
(注意)
 プロセスモードのサーバアプリケーションを起動する前には、CORBAサービスのインストールディレクトリ配下の/lib/ntを、CORBAサービスのインストールディレクトリ配下の/libより先に指定してください。
 ただし、OTSシステム起動時は、スレッド版のlibOM.soを使用してください。

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

(実行例)

  # bankA_c <RETURN>

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

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

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED