Interstage Application Server OLTPサーバ運用ガイド |
目次 索引 |
付録I トランザクションアプリケーションのワークユニット機能 | > I.12 ワークユニットの出口機能 |
ワークユニット単位に出口プログラムを設定することが可能です。ワークユニット起動/停止/異常終了などの事象ごとにワークユニット定義に指定したワークユニット出口プログラムを呼び出します。
ワークユニット起動時に共用メモリなどの資源を獲得し、ワークユニット停止または異常終了した場合に資源を解放するような場合に有効です。
また、ワークユニット起動時に呼び出されるワークユニット出口プログラムはユーザ情報を返却することができ、この情報はプロセス情報通知より参照が可能です。
たとえばワークユニット起動時にワークユニット出口プログラムにより共用メモリを獲得し、その獲得した共用メモリ識別子をワークユニット出口プログラムのユーザ情報として復帰することで、アプリケーションプロセスでワークユニット起動時に獲得した共用メモリ識別子を受け渡すことが可能となります。
ワークユニット出口プログラム機能は、最大処理時間監視を行うことができます。最大処理時間を超過した場合、出口プログラムを呼び出すプロセスは強制停止され、メッセージが出力されます。ワークユニットの起動時には、ワークユニット起動が失敗します。その他の契機で呼び出された場合は、動作異常とはなりません。
ワークユニット出口プログラムがループなどにより復帰しない場合、ワークユニットの起動/停止が終了しません。そのため、必ず最大処理時間監視を行うようにしてください。
ワークユニット出口プログラムは以下のディレクトリ上で動作します。
プラットフォーム |
システム |
指定形式 (注1) |
---|---|---|
Windows(R) |
− |
xxx\yyy\zzz |
Solaris |
デフォルトシステム |
xxx/yyy/zzz |
拡張システム (注2) |
xxx/yyy.システム名/zzz |
注1)
xxx:ワークユニット定義で指定されたディレクトリ
yyy:当該ワークユニット名
zzz:ワークユニット出口プログラムの実行プロセスID
注2)
拡張システムはSolarisのみ使用可能です。
また、上記ディレクトリ上に標準出力ファイルおよび標準エラー出力ファイルが出力されます。
ワークユニット出口プログラム機能の詳細については、“ワークユニット出口プログラム機能”を参照してください。
ワークユニット出口プログラム機能は、出口プログラムがワークユニット起動時に一度呼び出され、ワークユニット停止時に一度呼び出されます。ワークユニット起動時/停止時にアプリケーションプロセスごとに呼び出される前/後出口機能とは異なる機能であるため、注意が必要です。
ワークユニット出口プログラム機能とプロセス回収出口プログラム機能を併用する場合は、実行モジュールは同一とする必要があります。
アプリケーションより標準出力または標準エラー出力に向けて出力されたデータは、カレントフォルダ配下の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' が古い形式として宣言されました。”という警告が出力される場合がありますが、動作上の問題はありません。
目次 索引 |