Interstage Application Server アプリケーション作成ガイド (コンポーネントトランザクションサービス編) |
目次
索引
![]() ![]() |
第3章 サーバアプリケーションの作成(C++言語) | > 3.4 ソースのコンパイル・リンク |
IDLコンパイルを実施したディレクトリ |
TDのインストールディレクトリ/include |
ODのインストールディレクトリ/include |
EXTPのインストールディレクトリ/include |
アプリケーションをプロセスモードで動作させる場合は、以下のオプションは指定しないでください。
-mt -D_REENTRANT |
-D_REENTRANT |
Sun WorkShop C++ 4.2 Compilersを使用する場合
ライブラリ名 |
格納場所 |
用途 |
---|---|---|
libsocket.so |
/usr/lib |
ソケットライブラリ(必須) |
libnsl.so |
/usr/lib |
TLIライブラリ(必須) |
libC.so |
/usr/lib |
Cライブラリ(必須) |
libOM.so |
ODのインストールディレクトリ/lib/nt |
ODランタイム(注) |
libOMcncpp.so |
ODのインストールディレクトリ/lib |
ODランタイム(注) |
libextpapiskl_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libtdalcapi_nt.so |
TDのインストールディレクトリ/lib |
TDランタイム(必須) |
libtdapicpp_nt.so |
TDのインストールディレクトリ/lib |
TDランタイム(必須) |
libOMcpp.so |
ODのインストールディレクトリ/lib |
ODランタイム(必須) |
libextpapmcom_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libextpapmbase_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libextpapmlibTDNORM_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用する場合
ライブラリ名 |
格納場所 |
用途 |
---|---|---|
libsocket.so |
/usr/lib |
ソケットライブラリ(必須) |
libnsl.so |
/usr/lib |
TLIライブラリ(必須) |
libOM.so |
ODのインストールディレクトリ/lib/nt |
ODランタイム(注) |
libOMcncpp50.so |
ODのインストールディレクトリ/lib |
ODランタイム(注) |
libextpapiskl_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libtdalcapi_nt.so |
TDのインストールディレクトリ/lib |
TDランタイム(必須) |
libtdapicpp50_nt.so |
TDのインストールディレクトリ/lib |
TDランタイム(必須) |
libOMcpp50.so |
ODのインストールディレクトリ/lib |
ODランタイム(必須) |
libextpapmcom50_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libextpapmbase50_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libextpapmlibTDNORM50_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
ライブラリ名 |
格納場所 |
用途 |
---|---|---|
libnsl.so |
/usr/lib |
TLIライブラリ(必須) |
libC.so |
/usr/lib |
Cライブラリ(必須) |
libOM.so |
ODのインストールディレクトリ/lib/nt |
ODランタイム(注) |
libOMcncpp.so |
ODのインストールディレクトリ/lib |
ODランタイム(注) |
libextpapiskl_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libtdalcapi_nt.so |
TDのインストールディレクトリ/lib |
TDランタイム(必須) |
libtdapicpp_nt.so |
TDのインストールディレクトリ/lib |
TDランタイム(必須) |
libOMcpp.so |
ODのインストールディレクトリ/lib |
ODランタイム(必須) |
libextpapmcom_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libextpapmbase_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
libextpapmlibTDNORM_nt.so |
EXTPのインストールディレクトリ/lib |
TDランタイム(必須) |
(注)
中継用サーバアプリケーションを作成するとき、および、例外を使用するときに必要です。
Sun WorkShop Compilers C++ 4.2を使用する場合
%CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include tdsample1_s.C %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include -I/opt/FSUNextp/include TD_TDSAMPLE1_INTF_skel_c++.C %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include TD_tdsample1_c++.C %CC -o tdsample1_s_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel_c++.o TD_tdsample1_c++.o -lsocket -lnsl -lC -L/opt/FSUNod/lib/nt -L/opt/FSUNod/lib -lOMcpp -L/opt/FSUNtd/lib -ltdalcapi_nt -ltdapicpp_nt -L/opt/FSUNextp/lib -lextpapiskl_nt -lextpapmlibTDNORM_nt -lextpapmcom_nt -lextpapmbase_nt % |
Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用する場合
%CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include tdsample1_s.C %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include -I/opt/FSUNextp/include TD_TDSAMPLE1_INTF_skel_c++.C %CC -c -I/opt/FSUNod/include -I/opt/FSUNtd/include TD_tdsample1_c++.C %CC -o tdsample1_s_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel_c++.o TD_tdsample1_c++.o -lsocket -lnsl -L/opt/FSUNod/lib/nt -L/opt/FSUNod/lib -lOMcpp50 -L/opt/FSUNtd/lib -ltdalcapi_nt -ltdapicpp50_nt -L/opt/FSUNextp/lib -lextpapiskl_nt -lextpapmlibTDNORM50_nt -lextpapmcom50_nt -lextpapmbase50_nt % |
Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用してアプリケーションを作成する場合、リンクオプションに“-lC”および“-lCrun”を指定しないでください。
また、Sun WorkShop Compilers C++ 5.0またはWS Compilers C++ 6を使用して、Sun WorkShop Compilers C++4.2互換性モードのアプリケーションを作成する場合、コンパイル時およびリンク時に“ -compat”オプションを設定してください。
作成したアプリケーションライブラリにスレッドライブラリが結合されていないことを確認してください。
アプリケーションのコンパイル/リンクの手順に誤りがあった場合や、libthread.soがリンクされている場合、ワークユニット起動/停止処理またはクライアントとの通信が無応答状態となる可能性があります。その場合、以下の対処を行ってください。
1. 当該ワークユニット配下で動作しているアプリケーションプロセスのプロセスIDを特定します。
% ps -ef | grep ワークユニット名 |
2. 当該ワークユニット配下で動作しているアプリケーションプロセスを強制停止します。
% kill -9 プロセスID |
%g++ -c -I/opt/FJSVod/include -I/opt/FJSVtd/include tdsample1_s.C %g++ -c -I/opt/FJSVod/include -I/opt/FJSVtd/include -I/opt/FJSVextp/include TD_TDSAMPLE1_INTF_skel_c++.C %g++ -c -I/opt/FJSVod/include -I/opt/FJSVtd/include TD_tdsample1_c++.C %g++ -o tdsample1_s_nt tdsample1_s.o TD_TDSAMPLE1_INTF_skel_c++.o TD_tdsample1_c++.o -lnsl -lC -L/opt/FJSVod/lib/nt -L/opt/FJSVod/lib -lOMcpp -L/opt/FJSVtd/lib -ltdalcapi_nt -ltdapicpp_nt -L/opt/FJSVextp/lib -lextpapiskl_nt -lextpapmlibTDNORM_nt -lextpapmcom_nt -lextpapmbase_nt % |
作成したアプリケーションライブラリにスレッドライブラリが結合されていないことを確認してください。
アプリケーションのコンパイル/リンクの手順に誤りがあった場合や、libpthread.soがリンクされている場合、ワークユニット起動/停止処理またはクライアントとの通信が無応答状態となる可能性があります。その場合、以下の対処を行ってください。
1. 当該ワークユニット配下で動作しているアプリケーションプロセスのプロセスIDを特定します。
% ps -ef | grep ワークユニット名 |
2. 当該ワークユニット配下で動作しているアプリケーションプロセスを強制停止します。
% kill -9 プロセスID |
サーバアプリケーションのリンク時には、上記のライブラリのほかに、データベースや連携する他製品のライブラリなど、サーバアプリケーションで必要なライブラリがすべてリンクされていることを確認してください。また、リンクしたライブラリの格納先をワークユニット定義のアプリケーション使用ライブラリパス(Library for Applicationセクション)に設定してください。
リンクが完全でない場合やワークユニット定義のアプリケーション使用ライブラリパスが完全でない場合は、ワークユニット起動処理において実行ファイルのオープン処理に失敗し、メッセージ(EXTP4640,EXTP4643,EXTP4645,EXTP4508)が出力されます。
以下に必要なワークユニット定義の設定例を示します。
サーバアプリケーションの実行ファイルが“application1”、格納先が/application/bin、サーバアプリケーションにリンクされているライブラリの格納先が、それぞれ、“/product1/lib”、“/product2/lib”の場合の定義例を以下に示します。
[WORK UNIT] Name: SAMPLEWU Kind: ORB [APM] Name: TDNORM [Control Option] … Path: /application/bin Library for Application: /product1/lib Library for Application: /product2/lib Library for Application: /opt/FSUNod/lib/nt … [Application Program] … Executable File: application1 |
[WORK UNIT] Name: SAMPLEWU Kind: ORB [APM] Name: TDNORM [Control Option] … Path: /application/bin Library for Application: /product1/lib Library for Application: /product2/lib Library for Application: /opt/FJSVod/lib/nt … [Application Program] … Executable File: application1 |
サーバアプリケーションにリンクされているライブラリの格納先が複数存在する場合は、アプリケーション使用ライブラリパス(Library for Applicationセクション)を複数設定してください。
また、出口プログラムにリンクされているライブラリの格納先についても、同様にアプリケーション使用ライブラリパス(Library for Applicationセクション)に設定してください。
目次
索引
![]() ![]() |