付録A.5 アプリケーションプログラムが閉塞する場合
UAPが異常終了すると,OpenTP1はUAPのプロセスを自動的に再起動させます。ただし,異常終了と再起動の繰り返しでシステムの処理がループしないように,OpenTP1は指定した回数を超えて異常終了したUAPを閉塞します。また,異常終了したUAPを閉塞することで,クライアントからのサービス要求に意図的にエラーを返して不要な再実行を防ぐようにしています。
閉塞の対象になるUAPは,SPP(ただし,キュー受信型サーバのSPP)です。SUP,オフラインの業務をするUAP,およびソケット受信型サーバのSPPは,閉塞の対象になりません。
以降の説明は,SPPについてのものです。MHPについては該当しません。
(1) 閉塞と監視時間の関係
異常終了したUAPをいつ閉塞するかは,監視時間と異常終了した回数で決まります。
TP1/Server Baseの場合,システム定義に指定した監視時間内にUAPが3回異常終了すると,OpenTP1は3回目の異常終了時にUAPを閉塞させます。TP1/LiNKの場合は,1回目の異常終了時にUAPを閉塞させます。閉塞の時間監視はしません。
監視時間内の異常終了回数が2回以内の場合は,UAPのプロセスをOpenTP1が再起動します。
時間の監視は,1回目の異常終了から開始します。異常終了回数が2回以内の場合でも,2回目の異常終了からさらに異常終了回数の監視が始まっています。
監視時間と異常終了回数の関係を次の図に示します。
(2) サービスグループ単位の閉塞とサービス単位の閉塞
UAPを閉塞する単位では,サービスグループ単位の閉塞とサービス単位の閉塞があります。サービス単位の閉塞を指定しておくと,監視時間内にUAPが3回異常終了しても,該当するサービスだけを閉塞します。そのため,同じサービスグループのほかのサービスは処理を続けられます。
サービス単位の閉塞を指定できるのは,キュー受信型サーバのSPPだけです。また,サービスグループ単位の閉塞を指定できるのは,OpenTP1の基本機能がTP1/Server Baseの場合だけです。TP1/LiNKのSPPの場合は,サービス単位の閉塞だけです。
(3) アプリケーションプログラムの閉塞に関係するユーザサービス定義
UAPの閉塞に関係するユーザサービス定義を次に示します。ユーザサービス定義は,OpenTP1の基本機能がTP1/Server Baseの場合だけ指定できます。TP1/LiNKのSPPの場合は,UAPが異常終了した時点でサービス単位にすぐに閉塞します。
-
holdオペランド(SPP,MHPで有効)
UAPが異常終了した場合,すぐに閉塞するか,時間監視して閉塞するかを指定します。すぐに閉塞する場合はYを,時間監視して閉塞する場合はNを指定します。
-
service_holdオペランド(SPPで有効)
閉塞する単位をサービスグループ単位にするかサービス単位にするかを指定します。サービスグループ単位にする場合はNを,サービス単位にする場合はYを指定します。
-
term_watch_timeオペランド(SPP,MHPで有効)
時間監視して閉塞する場合の,サービスグループ単位の閉塞の監視時間を指定します。term_watch_timeオペランドの値は,service_term_watch_timeオペランドを指定した場合は無視されます。
-
service_term_watch_timeオペランド(SPPで有効)
時間監視して閉塞する場合の,サービス単位の閉塞の監視時間を指定します。service_term_watch_timeオペランドを指定した場合,term_watch_timeオペランドの値は無視されます。
閉塞に関するオペランドは,それぞれに指定した値の組み合わせによって,UAPが異常終了したあとに再起動するかまたは閉塞するかが決まります。オペランドの組み合わせと閉塞の有無の関係については,それぞれのオペランドの説明を参照してください。