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

第13章 マルチスレッドアプリケーションの環境> 13.1 マルチスレッド環境のアプリケーションの構成

13.1.2 マルチスレッド環境を考慮したサーバアプリケーションの構成

 分散トランザクション連携を行うCORBAサーバアプリケーションをマルチスレッド環境で使用する場合、以下のアプリケーション構成で運用することができるようになります。

1つのアプリケーションプロセス内でデータベースアクセスする場合

 上図例は、1つのアプリケーションプロセス内でスレッド多重3で、動作した場合です。

 3つのプロセスで行うことを、3つのスレッドで制御するため、資源削減になります。なお、同じデータベースにアクセスする場合、アクセスの内容によって、データベース側で排他制御される場合があります。例では、同じサーバ環境にOTSシステムも動作していますが、別サーバにOTSシステムを動作させても問題ありません。

サーバアプリケーションのコンパイル・リンクについて

 C言語用、C++言語用サーバアプリケーションソースを、Visual C/C++コンパイラを使用してコンパイルする場合、[プロジェクト]→[設定]→[C/C++]→[カテゴリ]を“コード生成”にし、[使用するランタイムライブラリに“マルチスレッド(DLL)”を選択してください。

 COBOL用サーバアプリケーションソースをコンパイルする場合、翻訳オプションに“THREAD(MULTI)”を指定してください。


 C言語用、C++言語用サーバアプリケーションソースをコンパイルする場合、"-mt"オプションを付加してください。

COBOL用サーバアプリケーションソースを、PowerCOBOL97 V6.0系以降を使用してコンパイルする場合、"-Tm"オプションを付加してください。

コンパイル・リンク方法の例(C言語の場合)

 以下にC言語でSymfoware/RDBを使用した場合のリンクパラメタを示します。Symfoware/RDBのインストールデイレクトリを/opt/FSUNrdb2bとしています。また、データベース連携サービスのインストールデイレクトリを/opt/FSUNots、CORBAサービスのインストールデイレクトリを/opt/FSUNodとしています。

 \:継続を示します

%  cc -mt -O -o test1_s test1_s.o test1_skel.o                                    \
/opt/FSUNots/program/xa/libotsxasym_mt.o                                         \
  -L/opt/FSUNots/lib -lservapl_mt -ltacebase -L/opt/FSUNrdb2b/lib -lsqldrvm      \
 -lrdbxam  -L/opt/FSUNod/lib -lOM -lOMcn -I/opt/FSUNod/include                   \
  -I/opt/FSUNots/include test1_s.c

コンパイル・リンク方法の例(COBOLの場合)

 以下にCOBOLでSymfoware/RDBを使用した場合のリンクパラメタを示します。Symfoware/RDBのインストール先を/opt/FSUNrdb2bとしています。また、データベース連携サービスのインストール先を/opt/FSUNotsとしています。

−サーバアプリケーションの作成

% cobol  -M -Tm -c test1_s.cbl
% cobol -dy -Tm -L. -L/opt/FSUNots/lib -lservaplcbl_mt -lservapl_mt -ltacebase  \
-L/opt/FSUNrdb2b/lib -lsqldrvm -lrdbxam -lsocket -lnsl -lm -ldl              \
-L/opt/FSUNod/lib -lOM -lOMcn -L/opt/FSUNod/lib -lOMcblMT                    \
-o test1_s test1_s.o  /opt/FSUNots/program/xa/libotsxasym_mt.o 

−cdrのコンパイル

% cobol -dy -G -Tm -o libtest1_cdr.so test1_cdr.cbl

−Symfoware/RDBのプレコンパイル

% /opt/FSUNrdb2b/FSUNrdbco/bin/sqlpcob -T test1_s_wit.ecob
% cobol -Tm -WC,"NOALPHAL" -c test1_s_wit.cobol
% /opt/FSUNrdb2b/FSUNrdbco/bin/sqlpcob  -T test1_s_dep.ecob
% cobol -Tm -WC,"NOALPHAL" -c test1_s_dep.cobol

−スケルトンのコンパイル

% cobol -dy -G -Tm -o libtest1_test1_account1_skel.so test1_test1_account1_skel.cbl

−メソッド用ライブラリのコンパイル

% cobol -dy -G -Tm -lrcobol  -L/opt/FSUNod/lib -lOM -lOMcn -lOMcblMT           \
-o libTEST1-ACCOUNT1.so -L. -ltest1_cdr                                      \
-ltest1_test1_account1_skel test1_s_wit.o test1_s_dep.o 

サーバアプリケーション情報のインプリメンテーションリポジトリへの登録

 OD_impl_instコマンドを使用して、インプリメンテーションリポジトリにサーバアプリケーション情報を登録します。登録の方法は、サーバアプリケーションのプロセス、スレッド関係なく一緒ですが、インプリメンテーション情報定義ファイル内の情報が異なります。OD_impl_instコマンドの詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。

% OD_impl_inst -ax defname

 OD_impl_instコマンドに指定するインプリメンテーション情報定義ファイルの内容例は以下です。

   rep_id               = IDL:ODdemo/calculator:1.0
   type                 = persistent
   proc_conc_max        = 1
   thr_conc_init        = 3
   mode                 = SYNC_END
   data                 = "RESOURCE:resourcedef1"

   rep_id         = IDL:ODdemo/calculator:1.0
   type           = persistent
   proc_conc_max  = 1
   thr_conc_init  = 3
   env            = LD_LIBRARY_PATH=/opt/FSUNots/lib:/opt/FSUNod/lib;OTS_HOME=/opt/FSUNots
   mode           = SYNC_END
   data           = "RESOURCE:resourcedef1"

 マルチスレッド環境で運用する場合、thr_conc_initパラメタにスレッド多重度を設定してください。スレッド多重度の制限値や、パラメタの詳細な意味や設定値については、“リファレンスマニュアル(コマンド編)”のOD_impl_instコマンドを参照してください。

 CORBAサービスから提供されるlibOM.soファイルは、サーバアプリケーションの言語に関係なくCORBAサービスのインストールディレクトリ/libが有効になるように環境変数LD_LIBRARY_PATHに設定してください。

 OD_impl_instコマンドはサーバアプリケーション情報を削除することもできます。削除処理の例を以下に示します。

% OD_impl_inst -d -r IDL:ODdemo/calculator:1.0


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

Copyright 2008 FUJITSU LIMITED