World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
wrapper.disable_forced_shutdown プロパティ

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 を強制終了して欲しくないケースもたまにあります。 このプロパティでは、この強制終了を「無効にする(True)/無効にしない(False)」を設定することができます。

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