5.5.7 J2EEアプリケーションの停止
ここでは,サーバ管理コマンドを使用してJ2EEアプリケーションを停止する方法について説明します。
サーバ管理コマンドを使用したJ2EEアプリケーションの停止には,次の五つの方法があります。
-
デフォルトのタイムアウト時間で通常停止を実行する
-
任意のタイムアウト時間を設定して通常停止を実行する
-
デフォルトのタイムアウト時間で通常停止を実行して,停止しなかった場合に強制停止を実行する
-
任意のタイムアウト時間を設定して通常停止を実行して,停止しなかった場合に強制停止を実行する
-
任意のタイムアウト時間を設定して通常停止を実行して,停止しなかった場合に自動的に強制停止を実行する
これらの方法以外の順序でコマンドを実行した場合,コマンドが異常終了します。例えば,通常停止をしない状態では,強制停止の形式でコマンドを実行できません。
また,1.,2.,または5.の処理は,一つのJ2EEアプリケーションに対してどれか1回だけ実行できます。
ただし,強制停止は,J2EEサーバの動作設定をカスタマイズして,強制停止が有効になるように設定されているシステムだけで実行できます。J2EEサーバの強制停止の設定については,「5.5.6 実行環境での設定」を参照してください。
J2EEアプリケーションの停止処理では,次の処理が実行されます。
- J2EEアプリケーションのフロントがWebアプリケーションの場合
-
-
新規リクエストを受け付けなくなります。
-
処理中のリクエストは引き続き処理されます。
-
Webアプリケーションの同時実行数制御のキューに格納されているリクエストのうち,Webコンテナでの処理が開始されていないものに対して,HTTP503エラーが返却されます。
-
- J2EEアプリケーションのフロントがEnterprise Beanの場合
-
-
新規リクエストを受け付けなくなります。
-
処理中のリクエストは引き続き処理されます。
-
停止後のアプリケーションに含まれているEnterprise Beanのメソッドの呼び出しはできません。停止後のアプリケーションに含まれているEnterprise Beanのメソッドを呼び出そうとすると,「stop could not lock <文字列>」というメッセージがJ2EEサーバの標準エラー出力に出力されることがありますが,問題ありません。
次に,それぞれのパターンについて,サーバ管理コマンドの実行手順を説明します。
- 〈この項の構成〉
(1) デフォルトのタイムアウト時間で通常停止を実行する
コマンドの実行手順,実行形式および実行例を次に示します。
-
J2EEアプリケーションを通常停止します。
cjstopappコマンドを実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名>
- 実行例
-
cjstopapp Myserver -name App1
なお,デフォルトのタイムアウト時間でコマンドを実行した場合,停止処理が完了しなくても60秒後にコマンドの制御が戻ります。
-
コマンドの制御がタイムアウトによって戻った場合は,J2EEアプリケーションの停止状態を確認します。
タイムアウトによってコマンドの制御が戻った場合,J2EEアプリケーションの停止処理は完了していないことがあります。このため,タイムアウトが発生した場合は,J2EEアプリケーションの状態を確認してください。
J2EEアプリケーションの状態は,サーバ管理コマンドのcjlistappコマンドを実行して確認します。
- 実行形式
cjlistapp <サーバ名称>
- 実行例
-
cjlistapp MyServer
J2EEアプリケーションの状態として,次のどれかの状態が出力されます。
表5‒24 J2EEアプリケーションの状態 出力される文字列
状態の意味
running
開始状態
stopped
停止状態
stopFailure
通常停止失敗状態
forceStopFailure
強制停止失敗状態
blockadeFailure
閉塞失敗状態
blockading
閉塞中
blockaded
閉塞状態
stopping
通常停止中
forceStopping
強制停止中
なお,手順の実行後,J2EEサーバの状態を確認してください。次の状態の場合は,J2EEサーバを再起動する必要があります。
-
閉塞失敗
-
通常停止失敗
(2) 任意のタイムアウト時間を設定して通常停止を実行する
コマンドの実行手順,実行形式および実行例を次に示します。
-
J2EEアプリケーションを通常停止します。このとき,コマンドのオプションに,コマンドの制御を戻すためのタイムアウト時間を設定します。
cjstopappコマンドに,-tオプションを指定して実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名> -t <タイムアウト時間>
- 実行例
-
cjstopapp MyServer -name App1 -t 120
この実行例を実行した場合,停止処理が完了しなくても120秒後にコマンドの制御が戻ります。
-
タイムアウトによってコマンドの制御が戻った場合は,J2EEアプリケーションの停止状態を確認します。
コマンドの制御がタイムアウトによって戻った場合,J2EEアプリケーションの停止処理は完了していないことがあります。このため,タイムアウトが発生した場合は,J2EEアプリケーションの状態を確認してください。
J2EEアプリケーションの状態は,cjlistappコマンドを実行して確認します。
- 実行形式
cjlistapp <J2EEサーバ名>
- 実行例
-
cjlistapp MyServer
J2EEアプリケーションの状態として出力される内容については,「5.5.7(1) デフォルトのタイムアウト時間で通常停止を実行する」の手順2.を参照してください。
なお,手順の実行後,J2EEサーバの状態を確認してください。次の状態の場合は,J2EEサーバを再起動する必要があります。
-
閉塞失敗
-
通常停止失敗
(3) デフォルトのタイムアウト時間で通常停止を実行して,停止しなかった場合に強制停止を実行する
コマンドの実行手順,実行形式および実行例を次に示します。
-
J2EEアプリケーションを通常停止します。
cjstopappコマンドを実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名>
- 実行例
-
cjstopapp MyServer -name App1
なお,デフォルトのタイムアウト時間でコマンドを実行した場合,停止処理が完了しなくても60秒後にコマンドの制御が戻ります。
-
タイムアウトによってコマンドの制御が戻った場合は,J2EEアプリケーションの停止状態を確認します。
コマンドの制御がタイムアウトによって戻った場合,J2EEアプリケーションの停止処理は完了していないことがあります。このため,タイムアウトが発生した場合は,J2EEアプリケーションの状態を確認してください。
J2EEアプリケーションの状態は,cjlistappコマンドを実行して確認します。
- 実行形式
cjlistapp <J2EEサーバ名>
- 実行例
-
cjlistapp MyServer
J2EEアプリケーションの状態として出力される内容については,「5.5.7(1) デフォルトのタイムアウト時間で通常停止を実行する」の手順2.を参照してください。
-
J2EEアプリケーションの強制停止を実行します。
J2EEアプリケーションが通常停止で停止しなかった場合,強制停止を実行します。
cjstopappコマンドに,-cancelオプションを指定して実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名> -cancel
- 実行例
-
cjstopapp MyServer -name App1 -cancel
強制停止が成功すると,J2EEアプリケーションで処理中のリクエストが中止されて,先に実行していた通常停止が終了します。
なお,手順の実行後,J2EEサーバの状態を確認してください。次の状態の場合は,J2EEサーバを再起動する必要があります。
-
強制停止失敗
-
閉塞失敗
-
通常停止失敗
(4) 任意のタイムアウト時間を設定して通常停止を実行して,停止しなかった場合に強制停止を実行する
コマンドの実行手順,実行形式および実行例を次に示します。
-
J2EEアプリケーションを通常停止します。このとき,コマンドのオプションに,コマンドの制御を戻すためのタイムアウト時間を設定します。
cjstopappコマンドに,-tオプションを指定して実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名> -t <タイムアウト時間>
- 実行例
-
cjstopapp MyServer -name App1 -t 120
この実行例を実行した場合,停止処理が完了しなくても120秒後にコマンドの制御が戻ります。
-
タイムアウトによってコマンドの制御が戻った場合は,J2EEアプリケーションの停止状態を確認します。
コマンドの制御がタイムアウトによって戻った場合,J2EEアプリケーションの停止処理は完了していないことがあります。このため,タイムアウトが発生した場合は,J2EEアプリケーションの状態を確認してください。
J2EEアプリケーションの状態は,cjlistappコマンドを実行して,確認します。
- 実行形式
cjlistapp <J2EEサーバ名>
- 実行例
-
cjlistapp MyServer
J2EEアプリケーションの状態として出力される内容については,「5.5.7(1) デフォルトのタイムアウト時間で通常停止を実行する」の手順2.を参照してください。
-
J2EEアプリケーションの強制停止を実行します。
J2EEアプリケーションが通常停止で停止しなかった場合,強制停止を実行します。
cjstopappコマンドに,-cancelオプションを指定して実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名> -cancel
- 実行例
-
cjstopapp Myserver -name App1 -cancel
強制停止が成功すると,J2EEアプリケーションで処理中のリクエストが中止されて,先に実行していた通常停止が終了します。
なお,手順の実行後,J2EEサーバの状態を確認してください。次の状態の場合は,J2EEサーバを再起動する必要があります。
-
強制停止失敗
-
閉塞失敗
-
通常停止失敗
(5) 任意のタイムアウト時間を設定して通常停止を実行して,停止しなかった場合に自動的に強制停止を実行する
コマンドの実行手順,実行形式および実行例を次に示します。
-
タイムアウト時間後に強制停止を実行する形式で,J2EEアプリケーションを停止します。
この形式では,J2EEアプリケーションをまず通常停止で停止して,指定したタイムアウト時間内に停止しなかった場合に,強制停止を実行します。
cjstopappコマンドに,-tオプションと-forceオプションを指定して実行します。
- 実行形式
cjstopapp <J2EEサーバ名> -name <J2EEアプリケーション名> -t <タイムアウト時間> -force
- 実行例
-
cjstopapp MyServer -name App1 -t 120 -force
なお,手順の実行後,J2EEサーバの状態を確認してください。次の状態の場合は,J2EEサーバを再起動する必要があります。
-
強制停止失敗
-
閉塞失敗
-
通常停止失敗