wrapper.disable_shutdown_hook プロパティ

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

警告

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

このプロパティでは、[System.exit()]へのコール検知を無効にします。 もし無効に設定されている場合、[System.exit()]へのコールは、 JVM がクラッシュしたと取り扱われ、サービスを再起動します。

Wrapper は、デフォルトでシャットダウンフックを登録します。 もし、アプリケーションが、サービスを停止する際には、 [WrapperManager.stop()] を呼び出すのではなく、 [System.exit()]を呼び出すと、Wrapper がサーバーを正しくシャットダウンします。

多くの理由により、シャットダウンフックを無効にしたいと願うかもしれません。

もし、アプリケーションが、時々失敗するコードを含んでいて、[System.exit()]をコールする場合、 サーバーが回復して戻ってくると確認するのに、このプロパティは役に立つはずです。 ただし、ほとんどのケースでは、 [wrapper.on_exit.<n>]の方が この問題を解決するのに、より適しています。

設定例:
wrapper.disable_shutdown_hook=TRUE

警告

System.exit()]がコールされたと Wrapper が検知すると、 [WrapperListener] メソッドを実装している場合、ご利用のアプリケーション上で、[stop()]メソッドをコールします。 ご利用のアプリケーションは、再度[System.exit()] をコールしたり、 AWT フレームやウィンドウ上で、[dispose()]メソッドをコールしたりしないようご注意ください。 Java がこれらのメソッドを実装している都合で、 シャットダウンフック スレッド内から呼び出しされた場合、これらのアクションのいずれかがデッドロックになります。 もし、これらのケースのいずれも回避できない場合、シャットダウンフックを無効にするべきです。

もし、ご自分で [System.exit()]あるいは [dispose()]メソッドが呼び出されるかどうかを制御できる場合、 デッドロック問題を回避するために、 [WrapperManager.hasShutdownHookBeenTriggered()] メソッドを利用してもよいかもしれません。

AWT デッドロックバグに関する詳しい情報は、Oracle のサイトに完全な『bug #4712342』の説明がありますのでご覧ください。

参照: シャットダウン

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