wrapper.jvm_cleanup.timeout プロパティ

対応バージョン :3.4.0
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

警告

このプロパティの説明を読まずに、パラメータを変更することは絶対にしないで下さい。 設定を間違えると、期待どおりに動作せず、Wrapperの動作不良や不具合の原因となります。

このプロパティには、JVMが完全にシャットダウンされた後、 新しいJVMを開始するか、あるいは、Wrapperをシャットダウンするか、 どちらかのプロセスを開始する前に、Wrapperがクリーンアップを実行する最大時間(秒数)を設定します。 プロパティ値を「0 (ゼロ)」に設定すると、タイムアウト(時間切れ)は発生しません。

デフォルト値は「10秒」です。

設定例:(10秒)
wrapper.jvm_cleanup.timeout=10

クリーンアッププロセスは、デタッチフラグ(切り離しマーク)を設定せず、 [WrapperManager.exec()]メソッドを使って起動された 全てのチャイルド(子)プロセスを終了させます。

Wrapper は、JVM がキレイに終了した後も動作を続けているチャイルド(子)プロセスのシャットダウンを試みます。 UNIX プラットフォーム上では、 これは、各プロセスへ「SIGTERM」を送信して、 それらのプロセスが退出するのを待機することで行われます。 Windows プラットフォーム上では、 [CTRL]+[C]のキー操作でシグナルをコンソールアプリケーションへ 送信して、そのチャイルド(子)プロセスによって所有されている 各ウィンドウへ、「WM_CLOSE」メッセージが送信されます。 多くの Windows アプリケーションでは、シャットダウンされる際に、 保存確認のダイアログが表示される可能性もあり、そのため、 それらのプロセスが完全に終了しない可能性があります。 現在、CTRL-C を Windows コンソールプロセスに送信して、 クリーンにシャットダウンするように要求することはできないため、 プロセスはただちに終了します。

もし全てのチャイルド(子)プロセスが、シャットダウンされたと固く決心している場合には、 Wrapperはタイムアウト(時間切れ)になる前に継続します。

一旦、タイムアウト(時間切れ)になると、 Wrapperは動作しているチャイルド(子)プロセスであっても、それらを強制的に閉じます。 UNIXプラットフォームでは、 各プロセスへ「SIGKILL」を送信することで行われます。 Windowsプラットフォーム上では、 そのプロセスは強制的に終了させられます。

チャイルド(子)プロセスについての情報は、唯一、 デバッグ出力が有効な場合の時だけ、 あるいは、 [wrapper.child.status.loglevel] プロパティが「見える」レベルに設定されている時だけ、 ログ化されます。

ケース例:

次の例では、 キレイにシャットダウンされるチャイルド(子)プロセス3個の例です。 2つのシャットダウンが即座に起こり、3番目には数秒の時間を要しています。

wrapper  | 管理されたチャイルドプロセスのシャットダウンをリクエスト中。 PID: 1852
wrapper  | 管理されたチャイルドプロセスのシャットダウンをリクエスト中。 PID: 3584
wrapper  | 管理されたチャイルドプロセスのシャットダウンをリクエスト中。 PID: 3944
wrapper  | 管理されたチャイルドプロセス 3 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセスがシャットダウンを確認しました。 PID: 1852
wrapper  | 管理されたチャイルドプロセスがシャットダウンを確認しました。 PID: 3584
wrapper  | 管理されたチャイルドプロセス 1 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセス 1 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセスがシャットダウンを確認しました。 PID: 3944
wrapper  | 全ての管理されたチャイルドプロセスがシャットダウン。
wrapper  | <-- Wrapperが停止しました

次の例では、 キレイにシャットダウンされるチャイルド(子)プロセス2個の例です。 3番目にはタイムアウト(時間切れ)が発生して、終了されています。

wrapper  | 管理されたチャイルドプロセスのシャットダウンをリクエスト中。 PID: 3276
wrapper  | 管理されたチャイルドプロセスのシャットダウンをリクエスト中。 PID: 3328
wrapper  | 管理されたチャイルドプロセスのシャットダウンをリクエスト中。 PID: 1200
wrapper  | 管理されたチャイルドプロセス 3 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセスがシャットダウンを確認しました。 PID: 3276
wrapper  | 管理されたチャイルドプロセスがシャットダウンを確認しました。 PID: 3328
wrapper  | 管理されたチャイルドプロセス 1 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセス 1 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセス 1 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセス 1 つはまだ動作中。
wrapper  | 管理されたチャイルドプロセスを強制で終了中。 PID: 1200
wrapper  | 管理されたチャイルドプロセスがシャットダウンを確認しました。 PID: 1200
wrapper  | 全ての管理されたチャイルドプロセスがシャットダウン。
wrapper  | <-- Wrapperが停止しました

警告

この機能が有効中の場合、 このプロパティ値を「0 (ゼロ)」(=タイムアウト無効)か、あるいは「ある程度の大きい値」に設定すると、 Wrapperがシャットダウンで引っ掛かる、あるいは、決してJVMを再起動させられない可能性がある、 という意味になるので注意してください。 その場合には、Wrapperを再開させるために、 チャイルド(子)プロセスを手動で終了する必要があるかもしれません。

参照: タイムアウト(時間切れ)