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

wrapper.ntservice.recovery.* プロパティ概要

Java Service Wrapperは、Javaプロセス内をモニタリング(監視)してエラーからリカバリー(回復)する、実に良い機能を備えています。 Wrapper自身がとても安定して動作している間、いかなる障害ポイントを避けられるので良いことです。 Wrapperでは、クラッシュしたりエラー状態で終了したサービスを自動的に再起動する、 Windowsサービス・マネージャーの機能を利用することが可能です。

この[wrapper.ntservice.recovery.<n>]プロパティ・シリーズでは、 Wrapperコンフィギュレーション内部から、 障害リカバリー(回復)機能を設定することが可能です。 以下のコンフィギュレーション使用例をご覧ください。

wrapper.ntservice.recovery.reset プロパティ

対応バージョン :3.5.5
対応エディション :プロフェッショナル版スタンダード版コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/OS (未対応)IBM z/Linux (未対応)

Windowsサービス・コントロール・マネージャーには、インストールされた各サービスごとに、障害カウント機能を装備しています。 サービスが予想外で終了するごとに毎回、そのカウンター番号が増えていき、そのカウンター用に登録された障害アクションを実行します。

このプロパティには、何もエラーなく経過した時間(秒数)を設定します。 この時間が経過すると、サービス・マネージャーがそのカウンターを「0 (ゼロ)」にリセットします。 このプロパティのデフォルト値は「3600」(=1時間)です。 もし「-1」を設定すると、サービス・コントロール・マネージャーのカウンターをリセットしません。

設定例:リセットまでの経過時間を86400秒(=1日):
wrapper.ntservice.recovery.reset=86400

注意

混乱を避けるために次の点にご注意ください。 サービス・コントロールパネル([コントロールパネル]→[管理ツール]→[サービス])の「プロパティ」ダイアログにある[回復]タブで、 リセット時間が秒数でなく「日数」で表示されています。 つまり、表示された値は「日数」なので、例えば「3600秒」(=1時間)の値は「0日」と表示されます。

wrapper.ntservice.recovery.command プロパティ

対応バージョン :3.5.5
対応エディション :プロフェッショナル版スタンダード版コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/OS (未対応)IBM z/Linux (未対応)

サービス・コントロール・マネージャーを利用するにあたり、1つだけ設定する必要があります。 それは、障害に反応して、外部コマンドを実行することです。 これは、クリーンアップ作業や外部通知を送信したりなどの動作に利用することができます。

各リカバリー(回復)イベント用に異なる [wrapper.ntservice.recovery.<n>.failure]プロパティ を指定することが可能ではありますが、 サービス・コントロール・マネージャー API では1つだけのコマンドを指定することが可能であり、 そのコマンドは1つ以上の複数のリカバリー(回復)イベント用の「障害アクション」として参照されます。

このプロパティにはデフォルト値はありませんが、1つ以上の「障害アクション」 ([wrapper.ntservice.recovery.<n>.failure]プロパティ) が「COMMAND」に設定されている場合には、 必ずこのプロパティを設定しなくてはなりません。

設定例:
wrapper.ntservice.recovery.command=C:\cleanup.bat

wrapper.ntservice.recovery.reboot_msg プロパティ

対応バージョン :3.5.5
対応エディション :プロフェッショナル版スタンダード版コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/OS (未対応)IBM z/Linux (未対応)

wrapper.ntservice.recovery.<n>.failure]プロパティ に「REBOOT」が指定されている場合、 サービス・コントロール・マネージャーはシステム・イベント「システムがリブートされた理由」を示すログを記録します。 このプロパティには、テキスト・メッセージを指定します。

デフォルト・メッセージは、Wrapperの言語ベースでローカライズされます。 英語版のデフォルト値は:「System will be rebooted now due to an error in the wrapped service.」

設定例:
wrapper.ntservice.recovery.reboot_msg=System will reboot now.

wrapper.ntservice.recovery.<n>.failure プロパティ

対応バージョン :3.5.5
対応エディション :プロフェッショナル版スタンダード版コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/OS (未対応)IBM z/Linux (未対応)

このプロパティには、Wrapperサービスがクラッシュしたりエラーで終了した場合に起こす「障害時のアクション」を設定します。 プロパティ名の「<n>」コンポーネント部は、カウントされた障害の回数に該当します。

サービス・コントロール・マネージャーは、システム・リブート時に、各サービスが障害を起こした回数をカウントします。 もしサービスが少なくとも[wrapper.ntservice.recovery.reset] プロパティで指定した経過時間数の間に障害が発生しなかった場合、その障害カウントを「0 (ゼロ)」へリセットします。 一方、サービスの障害回数がその障害カウント (N) に達した場合、このプロパティで設定したアクションを実行します。 もし障害カウントが設定された「N」値よりも大きい場合、一番大きい値「N番」を持つ障害アクションが適用されます。

可能なアクションは次のとおり:

  • [NONE] :

    サービス・マネージャーは何もしません。 これは何もリカバリー(回復)・プロパティが指定されていないのと同じです。 サービスが停止すると、停止したままになります。 大きいN値で定義されたいかなる障害アクションにも到達しません。

  • [RESTART] :

    サービス・マネージャーがサービスを再起動します。 これには、Wrapper自身が障害後のJVMの後にクリーンアップを実行する機能を備えているため、 Wrapperで一番よく利用されるアクションです。

  • [COMMAND] :

    サービス・マネージャーは、 [wrapper.ntservice.recovery.command] プロパティで指定されたコマンドを実行します。 もしコマンド実行後にサービスを再起動したい場合には、 そのコマンド内部で実行されるように設定してください。

  • [REBOOT] :

    サービス・マネージャーがマシンをリブートします。 もしサービスの開始モードが 「AUTO_START」に設定されている場合、 そのサービスはリブート後に再び開始されます。 さらに詳しくは[wrapper.ntservice.starttype] プロパティをご覧ください。

設定例:
wrapper.ntservice.recovery.1.failure=RESTART
wrapper.ntservice.recovery.2.failure=COMMAND
wrapper.ntservice.recovery.3.failure=REBOOT

APIでは、[NONE]あるいは[REBOOT]の後に、 障害アクションを指定することが可能ですが、それらは決して利用されることはないです。

注意

サービス・コントロールパネル([コントロールパネル]→[管理ツール]→[サービス])の「プロパティ」ダイアログにある[回復]タブには、 設定された障害アクションの最初の3つが表示されます。 しかしながら、Wrapperの提供するAPIではさらに定義が可能です。 3つ以上の障害アクションを利用すると、ダイアログを見たユーザーが混乱することもありますのでご注意ください。

wrapper.ntservice.recovery.<n>.delay プロパティ

対応バージョン :3.5.5
対応エディション :プロフェッショナル版スタンダード版コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)Linux (未対応)IBM AIX (未対応)FreeBSD (未対応)HP-UX (未対応)Solaris (未対応)IBM z/OS (未対応)IBM z/Linux (未対応)

このプロパティには、 [wrapper.ntservice.recovery.<n>.failure] プロパティで指定されたアクションに応じて実際に動作する前に、 サービス・コントロール・マネージャーが待機する時間数(秒数)を設定します。

このプロパティ値を「0 (ゼロ)以下」にすることはできません。 デフォルト値は[wrapper.ping.timeout]プロパティの3倍です。 JVMがまだ動作している間に、もしWrapperプロセス自身がクラッシュした場合、 3回のpingタイムアウト後にJVMが自らシャットダウンするように設定されます。 このリカバリー(回復)遅延プロパティは、1度目のJVMがシャットダウンするチャンスまで、 2度目のJVMでWrapper再起動を避けるために同じ値を利用します。 2度目のJVMを開始すると、おそらくほとんどの場合リソース競合が発生するでしょう。

理論上は、障害アクション「NONE」用に遅延を設定することが可能でありますが、 この場合、サービス・コントロール・マネージャーは「遅延」を無視するでしょう。

設定例:90秒(1.5分)の遅延に設定:
wrapper.ntservice.recovery.1.delay=90

注意

[回復]タブの「サービス」ダイアログ上でサービスをチェックする際に混乱を妨げるために、次の点にご注意ください。 サービス・コントロールパネル([コントロールパネル]→[管理ツール]→[サービス])の「プロパティ」ダイアログにある[回復]タブには、 遅延時間が秒数でなく「分」で表示されています。 つまり、表示された値は「分数」なので、例えば「90秒」(=1.5分)の値は「1分」と表示されます。

全部まとめる

次の例は、

  • 障害カウントのリセット時間を「86400秒」(=1日)
  • 障害1回目のとき:障害アクション1を実行する前に、サービス・コントロール・マネージャーの待機時間(遅延時間)「90秒間(1.5 分)」
  • 障害1回目のとき:障害アクション1を[RESTART]に指定、「サービスを再起動する」
  • 障害2回目のとき:障害アクション2を実行する前に、サービス・コントロール・マネージャーの待機時間(遅延時間)「180秒(3分)」
  • 障害2回目のとき:障害アクション2を[COMMAND]に指定、「外部コマンドを実行する」
  • 障害2回目のとき:外部コマンド「C:\cleanup.bat」を設定
  • 障害3回目のとき: 障害アクション3を実行する前に、サービス・コントロール・マネージャーの待機時間(遅延時間)「600秒(10分)」
  • 障害3回目のとき:障害アクション3を[REBOOT]に指定、「マシンをリブートする」
  • 障害3回目のとき:メッセージを設定、システム・イベントのリブート時のログ「System will reboot now」を表示する
設定例:
wrapper.ntservice.recovery.reset=86400

wrapper.ntservice.recovery.1.delay=90
wrapper.ntservice.recovery.1.failure=RESTART

wrapper.ntservice.recovery.2.delay=180
wrapper.ntservice.recovery.2.failure=COMMAND
wrapper.ntservice.recovery.command=C:\cleanup.bat

wrapper.ntservice.recovery.3.delay=600
wrapper.ntservice.recovery.3.failure=REBOOT
wrapper.ntservice.recovery.reboot_msg=System will reboot now.

Windowsサービスの[回復]タブをチェックする: