3.7.3 J2EEアプリケーションの閉塞制御
J2EEアプリケーションを停止するときに,スケジュールキューに登録されたリクエストの処理が完了するのを待ってから,J2EEアプリケーションを停止できます。これによって,停止するJ2EEアプリケーションがそのキューを共有する最後のアプリケーションであった場合に,すでに受け付けられたリクエストをエラーにしないで処理できます。
ここでは,閉塞制御の概要と閉塞の手順について説明します。
- 〈この項の構成〉
(1) 閉塞制御の概要
キューを共有する最後のJ2EEアプリケーションが停止する場合,CTMデーモンは,スケジュールキューの入り口を閉じてサービスを停止して,それ以上リクエストを受け付けないようにします。そのあと,スケジュールキューに登録されていたリクエストの処理がすべて完了するのを待ってから,J2EEアプリケーションを停止します。
J2EEアプリケーションの閉塞制御の概要を次の図に示します。
CTMの閉塞処理では,次の作業が実行されます。
-
新規リクエストの受け付けが終了されます。
-
スケジュールキューに格納されているリクエストのうち,すでにJ2EEサーバに振り分けられて処理中のリクエストは引き続き処理されます。
-
スケジュールキューに格納されているリクエストのうち,J2EEサーバへの振り分けがされていないリクエストに対しては,java.rmi.RemoteExceptionエラーが返却されます。
(2) 閉塞の手順
閉塞は,運用管理コマンドで実行します。
特定のホスト内のJ2EEアプリケーションを一括停止する場合の運用管理コマンドの実行形式と実行例を次に示します。なお,運用管理コマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「mngsvrutil(Management Serverの運用管理コマンド)」を参照してください。
- 実行形式
mngsvrutil -m <Management Serverのホスト名>[:<ポート番号>] -u <管理ユーザID> -p <管理パスワード> -t <ホスト名> -k host hold queues in:<リクエスト終了待ち時間(秒)>
- 実行例
-
-
サービス閉塞をして,すべてのリクエスト処理の完了を待つ場合
mngsvrutil -m mnghost -u user01 -p pw1 -t host01 -k host hold queues in:0
-
サービス閉塞をして,5分間リクエストの処理を続けて,終了しないリクエストは破棄する場合
mngsvrutil -m mnghost -u user01 -p pw1 -t host01 -k host hold queues in:300
-
サービス閉塞をして,リクエストはすぐに破棄する場合
mngsvrutil -m mnghost -u user01 -p pw1 -t host01 -k host hold queues in:-1
-
スケジュールキューの閉塞を解除するときは,mngsvrutilコマンドにサブコマンド「release」を指定して実行します。mngsvrutilコマンドの実行形式と実行例を次に示します。
- 実行形式
mngsvrutil -m <Management Serverのホスト名>[:<ポート番号>] -u <管理ユーザID> -p <管理パスワード> -t <ホスト名> -k host release queues
- 実行例
mngsvrutil -m mnghost01 -u user01 -p pw1 -t host01 -k host release queues