Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第2章 CORBAアプリケーション開発時の留意事項 | > 2.2 コンパイル・リンク |
CORBAサービスのサポートするサーバアプリケーションのモードには、プロセスモードとスレッドモードがあります。
サーバアプリケーションがプロセスモード、スレッドモードのどちらで動作するかは、OD_impl_instコマンドを使用してインプリメンテーションリポジトリへ登録した定義情報によって設定されます。
CORBAアプリケーションの形態として、スレッドモードとプロセスモードが存在します。なお、モードによりリンク方法や必要なライブラリが異なっているため注意が必要です。
アプリケーションプロセスがマルチスレッドで動作する形態です。通常は本タイプを選択します。アプリケーションから呼び出す併用製品のライブラリがマルチスレッド対応している場合は、必ず本タイプを選択してください。
なお、本タイプ選択時でも、「Sun 日本語COBOL」との組み合わせでCOBOLアプリケーションを作成する場合は、実際にマルチスレッド動作するアプリは作成できません。本来のマルチスレッド動作を実現するCOBOLアプリケーションを作成するためには、正式にマルチスレッド対応した「PowerCOBOL97」が前提となります。
定義ファイルにはthr_conc_maximumに2以上の値を設定します。定義ファイルの例を以下に示します。
rep_id = IDL:test1/intf1:1.0
type = persistent
proc_conc_max = 1
thr_conc_init = 16
thr_conc_maximum = 32
注意
・プロセスモード用のライブラリと結合したサーバアプリケーションは、上記の設定にかかわらずプロセスモードとして動作します。
・併用製品(言語ランタイムやDBMS等)のライブラリをリンクする際は、必ずマルチスレッド対応された(スレッドセーフの)ライブラリを指定してください。誤ってマルチスレッド未対応(スレッドアンセーフ)のライブラリをリンクした場合、アプリケーションプロセス全体としてマルチスレッド動作が保証されなくなるため、アプリケーションの動作は不定となります(たまたま正常動作するケースもあれば、異常終了等、突然誤動作を起こすケースもあります)。アプリケーションのコンパイル・リンクの際には、スレッドセーフなライブラリとスレッドアンセーフなライブラリが混在して結合されないよう、細心の注意が必要です。アプリケーションのリンク状態は、lddコマンドにより確認できます。
・スレッドモードのアプリケーションを動作させる場合は、環境変数LD_LIBRARY_PATHに“/opt/FSUNod/lib/nt” (Solaris OEの場合)が設定されていてはいけません。設定されている場合、アプリケーションが誤動作する要因となります。プロセスモードのアプリケーションとスレッドモードのアプリケーションを混在して運用する場合は、スレッドモードのアプリケーション起動時に環境変数LD_LIBRARY_PATHに“/opt/FSUNod/lib/nt” (Solaris OEの場合)が設定されていないことを確認してください。
アプリケーションプロセスがシングルスレッドで動作する形態です。本タイプは、アプリケーションが呼び出す併用ライブラリがマルチスレッド対応していない場合に限り選択します。通常はスレッドモードを選択してください。
定義ファイルにはthr_conc_maximumに1の値を、proc_conc_maxに2以上の値を設定します。定義ファイルの例を以下に示します。なお、プロセスモードの場合は、modeの設定内容にかかわらずCORBA_BOA_impl_is_ready()の動作モードはSYNC_ENDになります。
rep_id = IDL:test1/intf1:1.0 type = persistent proc_conc_max = 8 thr_conc_init = 1 thr_conc_maximum = 1
注意
・アプリケーションのリンクの際に、誤ってスレッドライブラリを指定していた場合、アプリケーションが誤動作する要因となります。アプリケーションのリンク状態は、lddコマンドにより確認できます。
・プロセスモードのアプリケーションを動作させる場合は、環境変数LD_LIBRARY_PATH に“/opt/FSUNod/lib/nt”(Solaris OEの場合)を設定しておく必要があります。設定されていない場合、アプリケーションが誤動作する要因となります。
bsh系の場合
LD_LIBRARY_PATH = /opt/FSUNod/lib/nt:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
csh系の場合
setenv LD_LIBRARY_PATH /opt/FSUNod/lib/nt:$LD_LIBRARY_PATH
目次
索引
![]() ![]() |