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

2.2.1 スレッドモードとプロセスモード

CORBAサービスのサポートするサーバアプリケーションのモードには、プロセスモードとスレッドモードがあります。

注意


環境変数LD_LIBRARY_PATHにプロセスモード用の設定をしている状態で、Interstage Application Serverのコマンド(isstartなど)を実行しないでください。


スレッドモード

アプリケーションプロセスがマルチスレッドで動作する形態です。通常、本タイプを選択します。アプリケーションから呼び出す併用製品のライブラリがマルチスレッド対応している場合は、必ず本タイプを選択してください。

サーバアプリケーションでスレッドモードを使用する際の設定方法を以下に示します。



インプリメンテーションリポジトリに登録したサーバアプリケーションの定義情報によって設定します。インプリメンテーションリポジトリへの定義情報の登録には、OD_impl_instコマンドを使用します。OD_impl_instコマンドの詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。

定義情報では、thr_conc_initに2以上の値を設定します。OD_impl_instコマンドで指定する定義ファイルの例を以下に示します。

rep_id            = IDL:test1/intf1:1.0
type              = persistent
proc_conc_max     = 1
thr_conc_init     = 16
thr_conc_maximum  = 32


サーバアプリケーションをスレッドモード用のライブラリと結合します。スレッドモード用のライブラリは、以下のとおりです(インストールパスはデフォルト)。

/opt/FSUNod/lib/libOM.so

/opt/FJSVod/lib/libOM.so

注意

  • 併用製品(言語ランタイムやDBMSなど)のライブラリをリンクする際は、必ずマルチスレッド対応された(スレッドセーフの)ライブラリを指定してください。誤ってマルチスレッド未対応(スレッドアンセーフ)のライブラリをリンクした場合、アプリケーションプロセス全体としてマルチスレッド動作が保証されなくなるため、アプリケーションの動作は不定となります(たまたま正常動作するケースもあれば、異常終了等、突然誤動作を起こすケースもあります)。アプリケーションのコンパイル・リンクの際には、スレッドセーフなライブラリとスレッドアンセーフなライブラリが混在して結合されないよう、細心の注意が必要です。アプリケーションのリンク状態は、lddコマンドにより確認できます。

  • スレッドモードのアプリケーションを動作させる場合は、環境変数LD_LIBRARY_PATHに“/opt/FSUNod/lib/nt”(Solarisの場合)または“/opt/FJSVod/lib/nt”(Linuxの場合)が設定されていてはいけません。設定されている場合、アプリケーションが誤動作する要因となります。プロセスモードのアプリケーションとスレッドモードのアプリケーションを混在して運用する場合は、スレッドモードのアプリケーション起動時に環境変数LD_LIBRARY_PATHに上記が設定されていないことを確認してください。


プロセスモード

アプリケーションプロセスがシングルスレッドで動作する形態です。本タイプは、アプリケーションが呼び出す併用ライブラリがマルチスレッド対応していない場合に選択します。通常、スレッドモードを選択してください。

サーバアプリケーションでプロセスモードを使用する際の設定方法を以下に示します。



インプリメンテーションリポジトリに登録したサーバアプリケーションの定義情報によって設定します。インプリメンテーションリポジトリへの定義情報の登録には、OD_impl_instコマンドを使用します。OD_impl_instコマンドの詳細については、“リファレンスマニュアル(コマンド編)”を参照してください。

定義情報では、proc_conc_maxに2以上の値を設定します。また、thr_conc_initとthr_conc_maximumに1を設定します。OD_impl_instコマンドで指定する定義ファイルの例を以下に示します。

rep_id            = IDL:test1/intf1:1.0
type              = persistent
proc_conc_max     = 8
thr_conc_init     = 1
thr_conc_maximum  = 1

なお、プロセスモードの場合は、サーバアプリケーションの活性化後の動作モードは、modeの設定内容にかかわらずSYNC_ENDになります。



サーバアプリケーションをプロセスモード用のライブラリと結合します。プロセスモード用のライブラリは、以下のとおりです(インストールパスはデフォルト)。

/opt/FSUNod/lib/nt/libOM.so

/opt/FJSVod/lib/nt/libOM.so

注意

  • アプリケーションのリンク時にスレッドライブラリを指定していた場合、誤動作の要因となります。このため、スレッドライブラリは指定しないでください。アプリケーションのリンク状態は、lddコマンドにより確認できます。

  • サーバアプリケーションの活性化後の動作モードは、OD_impl_instコマンドを使用して登録したmodeの設定内容にかかわらず、SYNC_ENDとなります。

  • プロセスモードのアプリケーションを動作させる場合は、環境変数LD_LIBRARY_PATHに“/opt/FSUNod/lib/nt”(Solarisの場合)/“/opt/FJSVod/lib/nt”(Linuxの場合)を設定しておく必要があります。設定されていない場合、誤動作の要因となります。
    設定方法を以下に示します。


    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


    bsh系の場合

    LD_LIBRARY_PATH = /opt/FJSVod/lib/nt:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH

    csh系の場合

    setenv LD_LIBRARY_PATH /opt/FJSVod/lib/nt:$LD_LIBRARY_PATH