ページの先頭行へ戻る
Interstage Application Server OLTPサーバ運用ガイド
Interstage

I.12.2 プロセス回収出口プログラム機能

アプリケーションが停止(異常終了も含む)した場合、ワークユニット定義で設定したプロセス回収出口プログラムを呼び出すことが可能です。プロセスが停止した場合、共有メモリなどに設定されたプロセスに関する資源、情報を削除したい場合に有効です。



プロセス回収出口プログラムはアプリケーションプロセス以外のプロセスから呼び出されますので、アプリケーションプロセス上でのみ参照可能な情報は参照できません。そのため、プロセス回収出口プログラムを作成する場合、考慮する必要があります。
当プロセス回収出口プログラムは停止コマンドによる停止または異常終了など、プロセスが停止した場合に呼び出されます。


ただし、一般アプリケーションの場合、停止コマンドにより停止された場合、およびワークユニット異常終了時に停止されたプロセスに関しては呼び出させません。


プロセス回収出口プログラム機能には、最大処理時間監視を行うことができます。最大処理時間を超過した場合、出口プログラムを呼び出すプロセスは強制停止され、メッセージが出力されます。動作異常とはなりません。
プロセス回収出口プログラムがループなどにより復帰しない場合、次のワークユニットの操作が待ち状態となります。そのため、必ず最大処理時間監視を行うようにしてください。

プロセス回収出口プログラムは以下のディレクトリ上で動作します。

プラットフォーム

システム

指定形式 (1)

Windows(R)

xxx\yyy\zzz

Solaris
Linux

デフォルトシステム

xxx/yyy/zzz

拡張システム

xxx/yyy.システム名/zzz

1)

xxx:ワークユニット定義で指定されたディレクトリ
yyy:当該ワークユニット名
zzz:プロセス回収出口プログラムの実行プロセスID


また、上記ディレクトリ上に標準出力ファイルおよび標準エラー出力ファイルが出力されます。

プロセス回収出口プログラムの詳細については、「H.2 プロセス回収出口プログラム機能」を参照してください。


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' が古い形式として宣言されました。」という警告が出力される場合がありますが、動作上の問題はありません。