wrapper.disable_forced_shutdown プロパティ

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

ユーザーが、Windows コンソールや UNIX シェルで[CTRL]+[C]キー操作をした場合、 あるいは UNIX 上で Wrapper プロセスへ「TERM 信号」を送信した場合、 Wrapper がシャットダウンプロセスを開始します。 その手順として、つまり、Wrapper 自身がシャットダウンする前に、設定された全てのタイムアウトを尊重して、 キレイに終了したり、 シャットダウンするまで待機します。

もし JVM の動作が悪い場合や設定ミスがあった場合、 これは、Wrapper が実際にシャットダウンするまでにかなりの時間がかかる可能性があります。 Wrapper 開発の早い段階でこの問題を認識し、ロジックを加えましたので、 [CTRL]+[C]キー操作や「TERM 信号」により、 Wrapper は全てのタイムアウトを無視して、即座に JVM プロセスを強制終了して、シャットダウンします。 この強制終了は、何かの理由により、Wrapper が既にシャットダウンプロセスを開始していた場合にも発生します。

通常、この強制終了の動作はとても便利なのですが、その一方で、 管理者にとってはこのような手法で JVM を強制終了して欲しくないケースもたまにあります。 このプロパティでは、この強制終了を無効にすることができます。

Wrapper バージョン 3.5.37 から、 強制終了を開始するために2つの[CTRL]+[C]キー操作や「TERM 信号」の間に必要な最小時間を制御する[wrapper.forced_shutdown.delay]プロパティを使用することもできます。

有効なプロパティー値は次のとおり:
  • [TRUE] :
    強制終了を無効にします。いかなる二次的なシャットダウンリクエストも無視されます。
  • [FALSE] :
    強制終了を有効にします。 Wrapper が既に終了中にシャットダウン要求を受けた場合、JVM を即座に強制終了します。

デフォルト値は[FALSE]です。

設定例:
wrapper.disable_forced_shutdown=TRUE
ログ例:(強制終了を有効)
wrapper  | [CTRL]+[C]キー操作がトラップされました。 シャットダウン中。
wrapper  | [CTRL]+[C]キー操作がトラップされました。即時にシャットダウンを強制中。
wrapper  | JVM はリクエストに応じて終了しませんでした、中止しました
wrapper  | <-- Wrapper が停止しました
ログ例:(強制終了を無効)
wrapper  | [CTRL]+[C]キー操作がトラップされました。  シャットダウン中。
wrapper  | [CTRL]+[C]キー操作がトラップされました。既にシャットダウン中。
wrapper  | ...
wrapper  | <-- Wrapper が停止しました

もし強制終了が無効で、かつ [wrapper.shutdown.timeout]プロパティあるいは [wrapper.jvm_exit.timeout]プロパティに 長時間の値が設定されていた場合、 Wrapper が終了する前に、両方のタイムアウトまで待機する必要があるかもしれません。 その場合に、シャットダウンの速度を上げる唯一の方法は、 Windows のタスクマネージャー、あるいは UNIX の「kill -9」を利用して、 Java プロセスを強制終了することです。 Windows の一部のバージョンでは、サービスとして動作中にタスクマネージャーから Java を終了できませんので、ご注意ください。

参照: シャットダウン

Java Service Wrapper では、必要なコンフィギュレーション設定を含んだ完全なパッケージを提供しており、 それを活用することで、皆様の求めるニーズに合った動作を実現させることができます。 上記の例の他に、工夫次第で様々なことが実現可能となりますので、それぞれ個別にプロパティページをご覧ください。