以下に示す形式で作成してください。なお、プロセス回収出口の作成言語は、ワークユニット定義の「kind」(ワークユニット種別)および、「Application Language」(アプリケーション言語)にかかわらず、C言語のみ有効です。
関数様式
long 出口名 ( char *sysname, char *wuname, char *username, long mode, long user_data1, long user_data2, long pid)
パラメタ | 設定内容 | 入出力 |
---|---|---|
char *sysname | システム名 (注) | 入力値 |
char *wuname | ワークユニット名 | 入力値 |
char *username | ワークユニット起動ユーザ名 | 入力値 |
long mode | 回収モード | 入力値 |
long user_data1 | ワークユニット出口復帰情報1設定値 | 入力値 |
long user_data2 | ワークユニット出口復帰情報2設定値 | 入力値 |
long pid | アプリケーションプロセスのプロセス番号 | 入力値 |
注)
「default」が設定されます。
回収モード
回収モードでは、プロセス回収出口の呼出し契機を通知します。以下のいずれかが設定されます。
状態 | 設定値 | 呼出し契機 |
---|---|---|
ワークユニット通常停止 | 1 | ワークユニット通常停止によるプロセス停止 |
ワークユニット強制停止 | 2 | ワークユニット強制停止 |
アプリケーション異常終了 | 3 | アプリケーション異常終了によるプロセス停止 |
アプリケーションタイムアウト | 4 | アプリケーションタイムアウトによるプロセス停止 |
プロセス回収 | 5 | 異常終了、ワークユニット起動失敗など別プロセスが起因する異常によるプロセスの停止、 |
出口プログラムでは、必要に応じて回収モードごとに処理を作成し、設定されている呼出し契機を判断して処理の振り分けを行ってください。
ワークユニット出口復帰情報1、2
ワークユニット起動時に、ワークユニット出口の出力値として返された復帰情報が設定されます。
復帰値 | 意味 |
---|---|
0 | 正常復帰 |
0以外 | 異常復帰 |
出口プログラムが正常復帰する場合は、復帰値に0を設定し、異常の場合は0以外を設定してください。
ただし、プロセス回収出口が異常復帰した場合でも、メッセージのみ出力され動作異常とはなりません。
プログラミング例
プロセス回収出口プログラムの記述例を以下に示します。
long recoverexit( char *sysname, char *wuname, char *username, long mode, long userdata1, long userdata2, long pid) { /* 状態遷移モードごとに処理を振り分ける */ switch(mode){ case 1: /* ワークユニット通常停止時の処理を記述 */ break; case 2: /* ワークユニット強制停止時の処理を記述 */ break; case 3: /* アプリケーション異常終了時の処理を記述 */ break; case 4: /* アプリケーションタイムアウト時の処理を記述 */ break; case 5: /* プロセス回収時の処理を記述 */ break; } return(0); }
ワークユニット定義
ワークユニット定義の記述例を示します。
[WORK UNIT] Name: ... Kind: ORB [APM] Name: TDNORM [Control Option] ... WorkUnit Exit Program: wuexit ←出口プログラム名を指定 Executable File of Exit Program for Salvage: libwuexit.DLL ←実行ファイル名を指定 Maximum Processing Time for Exit Program: 60 ←出口プログラム最大処理時間 ...
[WORK UNIT] Name: ... Kind: ORB [APM] Name: TDNORM [Control Option] ... WorkUnit Exit Program: wuexit ←出口プログラム名を指定 Executable File of Exit Program for Salvage: libwuexit.so ←実行ファイル名を指定 Maximum Processing Time for Exit Program: 60 ←出口プログラム最大処理時間 ...
プロセス回収出口プログラム機能を使用するために必要なワークユニット定義を以下に示します。
[Control Option]セクション、および、アプリケーションの運用形態(常駐運用、非常駐運用、マルチオブジェクト常駐運用)にあわせて、それぞれ、[Application Program]セクションに設定します。
プロセス回収出口プログラム名を設定します。
31バイト以内の英数字とアンダースコアが使用できます。
[Application Program]セクションに設定します。
プロセス回収出口プログラムが格納されている実行ファイル名を指定します。
「Exit Program for Process Salvage」ステートメントが設定された場合、本ステートメントを[Control Option]セクションまたは[Application Program]セクションに設定する必要があります。なお、両方のセクションに設定された場合は、運用形態別のセクションの設定が有効となります。
31バイト以内の制御文字(ShiftJISの0x00~0x1f,0x7f)を除く文字が使用できます。ただし、半角および全角英文字の大文字と小文字は区別されません。
31バイト以内の空白文字と半角カナを除く文字が使用できます。
出口プログラムの最大処理時間の監視値(秒)を設定します。
1~1800の整数値。
本ステートメントが[Control Option]セクションおよびアプリケーションの運用形態にあわせたセクションの両方に設定された場合は、運用形態別のセクションの設定が有効となります。
本ステートメントは省略可能です。本ステートメントを省略した場合、省略値として300が設定されます。
標準出力および標準エラー出力
プロセス回収出口プログラムが動作する時のカレントディレクトリは、以下のような構成になっており、カレントディレクトリ配下に標準出力用のファイルと標準エラー出力用のファイルが設定されています。
標準出力には、stdoutファイルが割り当てられています。プロセス回収出口プログラムで標準出力にデータを出力した場合に、出力先として使用されます。
標準エラー出力には、stderrファイルが割り当てられています。プロセス回収出口プログラムで標準エラー出力にデータを出力した場合に、出力先として使用されます。
カレントフォルダ:xxx\yyy\zzz_exit xxx :ワークユニット定義で指定されたフォルダ yyy :当該ワークユニット名 zzz :プロセス回収出口プログラムの実行プロセスid
カレントディレクトリ:xxx/yyy/zzz_exit xxx :ワークユニット定義で指定されたディレクトリ yyy :当該ワークユニット名 zzz :プロセス回収出口プログラムの実行プロセスid