Cosminexus システム運用ガイド

[目次][用語][索引][前へ][次へ]

4.5.1 J2EEアプリケーションの停止方法の種類

J2EEアプリケーションの停止とは,J2EEアプリケーションを構成するWebアプリケーションやEnterprise Beanの終了処理を実行して,J2EEアプリケーションをクライアントからのリクエストを受け付けない状態にすることです。この状態を,停止状態といいます。そのあとで,J2EEアプリケーション自体を停止します。

J2EEアプリケーションの停止方法には,次の2種類があります。

それぞれについて説明します。

<この項の構成>
(1) 通常停止
(2) 強制停止

(1) 通常停止

日常運用の中で,J2EEアプリケーションを停止するときの停止方法です。J2EEアプリケーション内のWebアプリケーションやEnterprise Beanを順番に停止して,サービスを安全に停止させます。なお,J2EEアプリケーション内でリクエストが実行されている場合,リクエストが終了するまでJ2EEアプリケーションは停止しません。ただし,通常停止を実行するときには,タイムアウトを設定できます。タイムアウトを設定しておくと,J2EEアプリケーションが停止していない場合でも,一定時間が経過したらクライアントに制御が戻ります。

通常停止では,まず,サービスを閉塞してリクエストの受け付けを中止してから,J2EEアプリケーションを停止します。サービス閉塞とは,新しいリクエストを受け付けない状態で,すでに受け付けたリクエストを実行することです。

例えば,次のような場合に計画的にJ2EEアプリケーションを停止するときには,まず,サービス閉塞を実行してから,J2EEアプリケーションを停止します。

(2) 強制停止

J2EEアプリケーションで処理中のリクエストが完了するのを待たないで,リクエストを強制的に停止する方法です。強制停止によって,使用されていたリソースは解放されます。

J2EEアプリケーションでトラブルが発生した場合など,クライアントに制御が戻らないときには,強制停止によってサービスが迅速に停止できるようになります。

ポイント
次の場合にはJ2EEアプリケーションの強制停止を実行できません。
  • ステートメントキャンセルが実行できない場合
    データベースを操作している場合に実行中のSQLの処理が戻らなくなったとき,ステートメントキャンセルが実行されます。ステートメントキャンセルは,実行中のSQLの処理を取り消す処理のことです。
    ただし,リソースアダプタの設定,システム構成,使用しているトランザクションの種類などによっては,ステートメントキャンセルができない場合があります。ステートメントキャンセルができない場合,SQLを実行中のトランザクションのタイムアウト,およびSQLの処理が戻らないJ2EEアプリケーションの強制停止は実行できません。
    ステートメントキャンセルについては,マニュアル「Cosminexus 機能解説」のトランザクションタイムアウトに関する説明を参照してください。
  • メソッドキャンセルが実行できない場合
    強制停止を実行すると,実行中のスレッドは,メソッドキャンセルによって予期しない場所で中断されます。このため,メソッドキャンセルの対象スレッドとほかのスレッドで更新または削除を実行する共有データがあるJ2EEアプリケーションの場合,メソッドキャンセルを使用できません。
    メソッドキャンセルが実行できないJ2EEアプリケーションの構成については,マニュアル「Cosminexus 機能解説」のJ2EEアプリケーション実行時間の監視機能に関する説明を参照してください。
  • CTMを使用する環境で,J2EEアプリケーションのアンデプロイ時のスケジュールキューを非活性にするための設定に,タイムアウト時間として0(ゼロ)を設定した場合
    CTMのスケジュールキューを非活性にするための処理のタイムアウト時間として0を設定した場合,リクエストが終了するまでCTMによる閉塞が完了しません。このため,J2EEアプリケーションを停止できなくなります。
    詳細は,マニュアル「Cosminexus 機能解説」のスケジュールキューの閉塞制御に関する説明を参照してください。