Cosminexus システム運用ガイド

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

4.4 J2EEアプリケーションの実行時間の監視とキャンセル

J2EEアプリケーションの内部で無限ループなどが発生すると,J2EEアプリケーションの動作を制御できなくなります。このようなトラブルへの対策として,J2EEアプリケーションの実行時間にタイムアウト値を設定しておき,一定時間を過ぎたら処理が完了しなくても制御が戻るように設定する方法があります。

Cosminexusで構築したシステムでは,次の2種類の機能が使用できます。

これらの機能では,J2EEアプリケーション内のメソッド単位にタイムアウト時間を設定して監視し,一定時間内に終了しなかったリクエストのタイムアウトを検知できます(メソッドタイムアウト機能)。また,タイムアウトが発生した場合,強制的にメソッドをキャンセルできます(メソッドキャンセル機能)。このとき,トランザクションも強制決着されます。メソッドキャンセルは,自動的に実行されるように設定できます。

J2EEアプリケーションの実行時間を監視してタイムアウトが発生したリクエストを自動的にキャンセルするための設定は,サーバ管理コマンドを使用して実行します。また,J2EEアプリケーションの実行時間を監視するかどうか,および監視時間間隔は,J2EEサーバの動作設定のカスタマイズで設定します。J2EEアプリケーション実行時間の監視の設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

また,J2EEアプリケーションでメソッドタイムアウトが発生した場合や,メソッドキャンセルに失敗したスレッドが存在する場合は,サーバ管理コマンドを使用して,手動でメソッドキャンセルを実行(再実行)する必要があります。

サーバ管理コマンドによってメソッドキャンセルを実行する手順を次に示します。

手順
タイムアウトが発生したことを示すメッセージ,またはスレッドの状態が不正なことを示すメッセージを受け取ったあとで,次の手順で実行します。
  1. J2EEアプリケーションの実行状態を確認する(4.4.1参照)
    サーバ管理コマンドを使用して実行します。
  2. タイムアウトが発生している場合,J2EEアプリケーションで実行しているリクエストをキャンセルする(4.4.2参照)
    サーバ管理コマンドを使用して実行します。

なお,J2EEアプリケーションを強制的に停止した場合も,メソッドはキャンセルされます。J2EEアプリケーションの強制停止についての詳細は,「4.5.5 J2EEアプリケーションの停止」を参照してください。

<この節の構成>
4.4.1 J2EEアプリケーションの実行状態の確認
4.4.2 タイムアウトが発生したリクエストのキャンセル