サーバアプリケーションの処理を、オペレーティングシステムに添付されているエディタなどを使用して記述します。
ローカルトランザクション運用の場合は、リソースマネージャが提供するトランザクション命令と、リソースマネージャを使用するために必要な、データベースの結合処理や切り離し文などを記述してください。記述するトランザクション命令については、使用するリソースマネージャのマニュアルを参照してください。
IDL定義とサーバアプリケーション名の関係を以下に示します。
モジュール名_インタフェース名_オペレーション名 |
サーバアプリケーションにおいて、引数に指定するオブジェクト情報は設定されていません。
セション情報管理機能を使用する場合は、“5.3 セション情報管理機能を使用したトランザクションアプリケーションの作成”を参照してください。
トランザクションアプリケーションにおいて、イベントサービスを利用する場合、使用可能なイベントサービスの機能は以下になります。
Pushモデルのサプライヤ
サーバアプリケーションにインクルードするヘッダファイル
IDLコンパイルにより生成される以下のヘッダファイルをサーバアプリケーションにインクルードしてください。
ヘッダファイル | 種別 |
---|---|
TD_オブジェクト名.h | スケルトン用ヘッダファイル |
IDLファイル名.h | スタブ用ヘッダファイル(注) |
(注)
中継用サーバアプリケーションを作成するときに必要です。スタブ側のIDLファイルのコンパイルにより生成されます。
出口プログラムは以下の形式で作成してください。なお、ここでの出口プログラムとは、前出口プログラム、後出口プログラム、および、プロセスバインド機能を使用する場合の異常出口プログラムを指します。
引数 | なし |
復帰値 | long型 |
復帰値が0以外の場合は、出口プログラム異常終了とみなし、出口プログラム種別ごとに以下の動作となります。
前出口プログラムの場合、ワークユニットの起動に失敗します。
後出口プログラムの場合、警告メッセージを出力し、ワークユニットの停止処理は成功します。
プロセスバインド機能の異常出口の場合、アプリケーションプロセスが異常終了します。その後、アプリケーション異常時の自動再起動が設定されている場合は、アプリケーションプロセスが自動再起動され、自動再起動が設定されていない場合は、ワークユニットが異常終了します。
出口プログラム作成時の注意点
出口プログラムを使用する場合、出口プログラムをDLLからエクスポートするために、関数のプロトタイプ宣言に__declspec(dllexport)キーワードを付加してください。または、モジュール定義ファイル(.DEF)を使用して、出口プログラムをエクスポートしてください。
Microsoft(R) Visual C++ .NETまたは、Microsoft(R) Visual C++ 2005を使用してアプリケーションを作成する場合の注意点
アプリケーションより標準出力または標準エラー出力に向けて出力されたデータは、カレントフォルダ配下のstdoutファイルまたはstderrファイルに出力されます。
しかし、Microsoft(R) Visual C++ .NETまたは、Microsoft(R) Visual C++ 2005を使用してビルドされたアプリケーションでは、標準出力または標準エラー出力に向けて出力されたデータが、カレントフォルダ配下のstdoutファイルまたはstderrファイルに出力されません。
これを回避し正しく出力するためには、アプリケーションにおいて以下の対処を実施してください。
プログラムの先頭に以下のコードを追加してください。(注1)
freopen("stdout", "w", stdout); freopen("stderr", "w", stderr);
なお、前出口プログラムを使用される場合は、前出口プログラムの先頭に追加してください。前出口プログラムに追加した場合、本処理および後出口プログラムへの対処は必要ありません。
前出口プログラムを使用されない場合は、本処理の先頭に追加し、かつ、初回呼び出し時のみ実行するよう対処してください。
注1) Microsoft(R) Visual C++ 2005を使用してビルドした場合、“warning C4996: 'freopen' が古い形式として宣言されました。”という警告が出力される場合がありますが、動作上の問題はありません。