ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

C.3.1 アプリケーションの作成

プロセス回収出口プログラムは、以下の形式で作成します。

注意

プロセス回収出口プログラムは、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 *userdate1

ワークユニット出口復帰情報1設定値

入力値

long *userdate2

ワークユニット出口復帰情報2設定値

入力値

long pid

アプリケーションプロセスのプロセス番号

入力値

注)“default”が設定されます。

回収モード

回収モードでは、プロセス回収出口の呼出し契機を通知します。以下のどれかが設定されます。

状態

設定値

呼出し契機

ワークユニット通常停止

1

ワークユニット通常停止によるプロセス停止

ワークユニット強制停止

2

  • ワークユニット強制停止時

  • Interstage強制停止時

  • Interstage全強制停止時

ワークユニット異常終了

3

ワークユニット異常終了によるプロセス停止時

プロセス回収

5

ワークユニット異常終了やワークユニット起動失敗など、別プロセスが起因するプロセス停止時

出口プログラムでは、必要に応じて回収モードごとに処理を作成し、回収モードに設定されている値により呼出し契機を判断して、処理を振り分けてください。

復帰情報1、復帰情報2

ワークユニット起動時に、ワークユニット出口の出力値として返された復帰情報が設定されます。

復帰値

復帰値

意味

0

正常復帰

0以外

異常復帰

出口プログラムが正常復帰する場合は復帰値に0を設定し、異常の場合は0以外を設定してください。
ただし、プロセス回収出口が異常復帰した場合でも、メッセージだけが出力され、動作異常にはなりません。

標準出力およびエラー出力

プロセス回収出口プログラムが動作するときのカレントディレクトリは、以下のような構成になっています。

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

カレントディレクトリ配下に、標準出力用のファイルと標準エラー出力用のファイルが設定されています。
標準出力には、stdoutファイルが割り当てられます。プロセス回収出口プログラムで標準出力にデータを出力した場合に、出力先として使用されます。
標準エラー出力には、stderrファイルが割り当てられます。プロセス回収出口プログラムで標準エラー出力を出力した場合に、出力先として使用されます。

記述例

プロセス回収出口プログラムの記述例を以下に示します。

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    5:
        /* プロセス回収時の処理を記述 */
        break;
    }

    return(0);
}