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

G.2.2 プログラミングの流れ

以下に示す形式で作成してください。なお、プロセス回収出口の作成言語は、ワークユニット定義の「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」が設定されます。


回収モード

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

状態

設定値

呼出し契機

ワークユニット通常停止

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

ワークユニット強制停止

ワークユニット強制停止
Interstageの起動サービス強制停止時
Interstageの全強制停止時

アプリケーション異常終了

アプリケーション異常終了によるプロセス停止

ユーティリティワークユニットの自動停止モードを設定している場合のプロセス停止

アプリケーションタイムアウト

アプリケーションタイムアウトによるプロセス停止

プロセス回収

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

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


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

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


復帰値

復帰値

意味

正常復帰

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]セクションに設定します。


Exit Program for Process Salvage:プロセス回収出口プログラム名

プロセス回収出口プログラム名を設定します。
31バイト以内の英数字とアンダースコアが使用できます。
[Application Program]セクションに設定します。

Executable File of Exit Program for Salvage:出口プログラム実行ファイル名

プロセス回収出口プログラムが格納されている実行ファイル名を指定します。
「Exit Program for Process Salvage」ステートメントが設定された場合、本ステートメントを[Control Option]セクションまたは[Application Program]セクションに設定する必要があります。なお、両方のセクションに設定された場合は、運用形態別のセクションの設定が有効となります。


31バイト以内の制御文字(ShiftJISの0x00~0x1f,0x7f)を除く文字が使用できます。ただし、半角および全角英文字の大文字と小文字は区別されません。


31バイト以内の空白文字と半角カナを除く文字が使用できます。

Maximum Processing Time for Exit Program:出口プログラム最大処理時間

出口プログラムの最大処理時間の監視値(秒)を設定します。
1~1800の整数値。
本ステートメントが[Control Option]セクションおよびアプリケーションの運用形態にあわせたセクションの両方に設定された場合は、運用形態別のセクションの設定が有効となります。
本ステートメントは省略可能です。本ステートメントを省略した場合、省略値として300が設定されます。


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

プロセス回収出口プログラムが動作する時のカレントディレクトリは、以下のような構成になっており、カレントディレクトリ配下に標準出力用のファイルと標準エラー出力用のファイルが設定されています。

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


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

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