wrapper.ignore_signals プロパティ

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

警告

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

このプロパティには、 Wrapperがシステムシグナルを「無視する(TRUE)/無視しない(FALSE)」を設定します。 デフォルト値は「FALSE」(無視しない)です。 もし、「TRUE」(無視する)が設定されている場合、Wrapperは、 UNIX上での「TERM」あるいは「INT」シグナルや、Windows上での[CTRL]+[C]のキー操作イベントに応答しません。

UNIXシステム上で、クローンジョブのようなバックアッププログラムが システム全体へ「TERM」シグナルを発信することがあり、それでWrapperがシャットダウンすることがあります。 このプロパティを「TRUE」(無視する)に設定することで、これらのシグナルを無視することができます。

ほとんどのケースでは、このプロパティの設定は必要ないか、あるいは、手動での設定を希望することでしょう。 Wrapperに同梱して提供しているシェルスクリプトを使って、 そのスクリプトの最初のセクションで、単に [IGNORE_SIGNALS]プロパティを有効化(コメント記号を外す)して、 アンカーファイルによるWrapper停止機能を、設定することができます。 これで、 [wrapper.anchorfile] プロパティを有効にすれば、Wrapperを開始したり停止したりを、スクリプトによるコントロールができます。 そのアンカーファイルが削除されると、スクリプトがWrapperをシャットダウンさせることが可能になります。 通常の方法は、Wrapperへ「TERM」シグナルを送信します。

もし、スクリプトが、カレントシェルで実行するように[console]コマンドを引き渡された場合、 [CTRL]+[C]のキー操作などを含む、システムシグナルに依然として応答します。 [start]コマンドが使われた場合、 Wrapperはデーモンプロセスとして起動して、全ての「INT」や「TERM」シグナルを無視します。 シェルスクリプトで[stop]コマンドを実行することで、 あるいは、手動でアンカーファイルを削除することで、Wrapperを停止することができます。

Windows上では、「SHUTDOWN」(シャットダウン)や「LOGOFF」(ログオフ)イベントは、 このプロパティ値に関わらず、通常どおり取り扱われます。 万一、タイミング良く終了をし損なう場合には、 システムは、どんなイベントでもアプリケーションを強制終了します。 WrapperがWindowsサービスとして動作しているなら、 「LOGOFF」(ログオフ)イベントは常に無視されますので、ご注意ください。

設定例:(無視する)
wrapper.ignore_signals=TRUE

もし、[IGNORE_SIGNALS]プロパティが、 [wrapper.anchorfile] プロパティと連動して利用されていない場合、 Wrapperはシステムシグナルを無視しますので、シャットダウンのいかなる手法も持たないことになります。 そのようなケースでは、 アプリケーションをシャットダウンする仕組みを提供するJavaアプリケーションの責任になります。 これは、 [WrapperManager.stop()]、 あるいは、 [System.exit()] のどちらかをコールすることで、シャットダウンできます。

注意

もし、このプロパティを手動で設定する予定であるならば、 自力でシャットダウンできるアプリケーションの能力をテストして、 完全に信頼できるまで待つべきであることをお薦めします。

警告

もし、このプロパティを「TRUE」(シグナルを無視する)に設定すると、 外部的にWrapperへ停止を伝えることが出来なくなります。 Windows上では[CTRL]+[C]のキー操作がもはや機能しなくなり、 UNIXシステム上では [CTRL]+[C]のキー操作や、通常の「kill」シグナルが無視されます。 つまり、UNIX上で、 もし、Wrapperを開始する前に、 そのスクリプト内で[IGNORE_SIGNALS]プロパティが 有効化(コメント記号を外す)されていないならば、 Wrapperに同梱して提供しているシェルスクリプトでは JVMを停止することができない、という意味です。

UNIX上で、依然として、 [kill -9]シグナルを使って 強制的にプロセスを停止することもできますが、 そうすると、JVMの動作を残したままWrapperを停止(kill)します。 JVMのpingタイムアウトの時間切れの後、JVMは自力で終了しますが、 Wrapperが停止(kill)された後のコンソール出力は、全て失われます。

もし、Wrapperがコンソールアプリケーションとして動作しているならば、 Windows上では、タスクマネージャーからWrapperとJVMを強制終了することができます。 もし、Windowsサービスとして動作しているならば、 依然としてWrapperを通常どおり停止することができます。

注意

このプロパティを、 [WRAPPER]、 [JAVA]、あるいは、 [BOTH]に設定することも可能で、 Wrapperプロセス、Javaプロセス、あるいは両方のプロセスに適用するべき シグナルの機能性を無視するかどうかコントロールするために使います。 これらの値は主としてテスト用に役に立ちます。

参照: シグナル関連