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

index

wrapper.timer.<n>.<x> プロパティ

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

警告

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

このタイマープロパティでは、クローンジョブのような指定された時刻やインターバル(一定間隔)で、 JVM の再起動、シャットダウン、スレッドダンプのスケジュール予約を可能にします。 ユーザーアプリケーションにメモリリークが発生する場合など、 定期的な再起動を必要とするケースで、このタイマーは便利な機能です。

基本設定:

次の例では、毎日AM4時にJVMを再起動します。

設定例:
wrapper.timer.1.action=RESTART
wrapper.timer.1.interval=hour=4

各タイマーの宣言は、2つのプロパティから成り立っています:

<n> コンポーネント部:

プロパティ名の「<n>」コンポーネント部には、 「1」からカウントアップしていくインテージャー(整数値)のナンバリング数値を入れて指定します。 デフォルトでは、連番であり欠番で飛ぶことはできないはずです。 [wrapper.ignore_sequence_gaps] プロパティで、シーケンス内でギャップ(途切れ)検索を「許可する/許可しない」を任意に設定にすることができます。

wrapper.timer.<n>.action プロパティ

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

可能なタイマーアクションは次のとおり:

  • [DEBUG] :

    毎回タイマーが発生するごとに、デバッグメッセージがログ化されます。 この機能は、どのようにタイマーが動作しているか把握するのに便利です。

  • [DUMP] :

    毎回タイマーが発生するごとに、JVM がスレッドダンプを実行するようリクエストします。 メモリや動作の問題を追究するのに役立ちます。 もし高い頻度でインターバル(一定間隔)を設定する場合には、 大きいサイズのログファイルを取り扱えるように、 ログ化コンフィギュレーションプロパティが 正しくセットアップされていることを確認してください。 JVM が動作していない環境では、この値を無視します。

  • [GC] (ver. 3.5.7から):

    毎回タイマーが発生するごとに、JVM で完全なガベージコレクション掃除を実行します。 完全な掃除をすると、ガベージコレクション中、しばしば全てのスレッドがフリーズしたりなど引き起こすため、 これを頻繁にすると JVM のパフォーマンスに影響しますのでご理解ください。 JVM が動作していない環境では、この値を無視します。

  • [RESTART] :

    毎回タイマーが発生するごとに、Java アプリケーションを再起動します。 JVM が動作していない環境では、この値を無視します。

  • [SHUTDOWN] :

    毎回タイマーが発生するごとに、Wrapper がシャットダウンされます。 これは、外部から Wrapper が再起動されない限り、明らかに一度限りのシャットダウンで実行されます。

  • [USER_<n>] (ver. 3.5.0から)(プロフェッショナル版):

    ユーザー定義イベントを発生します。

  • [PAUSE] (ver. 3.5.0から) :

    ポーズ(一時停止)が可能で JVM が動作している場合、Java アプリケーションをポーズ(一時停止)します。 詳しくは[wrapper.pausable]プロパティをご覧ください。

  • [RESUME] (ver. 3.5.0から):

    ポーズ(一時停止)状態にあるとき、Javaアプリケーションをレジューム(再開)します。 これは、JVM が停止ではなくポーズ(一時停止)している場合に利用可能です。 詳しくは[wrapper.pausable]プロパティをご覧ください。

  • [SUSPEND_TIMEOUTS_<n>] (ver. 3.5.40 から)(スタンダード版、プロフェッショナル版):

    JVM が応答しない場合、Wrapper に全てのタイムアウトを停止するように指示します。 「<n>」は、タイムアウトを停止する期間(秒数)を指定し、1-3600 (1秒から1時間まで)の範囲で設定できます。 これは、Java アプリケーションが長いブロックタスクを実行する必要がある時に Wrapper がアプリケーションが応答不能と判断するのを防ぐために使用できます。

    その他のアクションプロパティ、コマンドファイル、或いは Java WrapperManager.suspendTimeouts() メソッドでタイムアウトを停止することができます。

    タイムアウトを停止するリクエストが複数ある場合、各リクエストで指定されている秒数は加算されません。 代わりに、新しく指定された秒数が残りの停止期間より長い場合、停止期間が置き換えられますが、 それより短い場合は無視されます。

  • [RESUME_TIMEOUTS] (ver. 3.5.40 から)(スタンダード版、プロフェッショナル版):

    Wrapper に、停止された全てのタイムアウトを再開するように指示します。

    その他のアクションプロパティ、コマンドファイル、或いは Java WrapperManager.resumeTimeouts() メソッドでタイムアウトを再開することができます。

  • [NONE] :

    事実上、タイマー機能を無効にします。 断続的に利用したいタイマーの場合、再設定しなければならない手間を回避するために、 タイマー設定を削除するのではなく、一時的にタイマー機能を無効にするのに便利です。

複数のアクションを指定する:

Wrapper バージョン 3.5.0 から、スペースやカンマで区切ることで、複数のアクションを指定することが可能です。 複数のアクションを指定すると、迅速に指定した順番で続けて実行されます。

次の例は、毎日AM4時にスレッドダンプを実行して、その後、JVM を再起動します。

設定例:
wrapper.timer.1.action=DUMP,RESTART
wrapper.timer.1.interval=hour=4

wrapper.timer.<n>.interval プロパティ

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

トークン(時間単位)の組み合わせを使って、毎回決まった定刻に動く、タイマーのインターバル(一定間隔)を設定できます。 例えば、次の例では、"2日毎の 04:30:10 の時刻に JVM を再起動します":

設定例:
wrapper.timer.1.action=RESTART
wrapper.timer.1.interval=day-of-week=*/2; hour=4; minute=30; second=10

インターバル(一定間隔)のトークン(時間単位)の設定に可能な値は次のとおり:

  • [day-of-week] : 曜日を指定します。 使用可能な価値は 「1(日曜) - 7(土曜)」の範囲です。

  • [hour] : 時刻(時)を指定します。 使用可能な価値は「0 - 23」の範囲です。

  • [minute] : 時刻(分)を指定します。 使用可能な価値は「0 - 59」の範囲です。

  • [second] : 時刻(秒)を指定します。 使用可能な価値は「0 - 59」の範囲です。

トークン(単位)の値に利用できる形式は次のとおり:

  • 絶対値:

    5]のような値は、単一の固定値を指定するために使います。 例えば「hour=5」ならば「5時」です。

  • 全ての値:

    *]のような値は、 ワイルドカード文字と同じで、可能な値の全てを指定するために使います。

    例えば「hour=*」ならば「 hour=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23」です。

  • 全ての値(オフセットで開始):(バージョン 3.5.25)

    *+OFFSET」のような値は、指定されたオフセットから始めて、 そのトークン使用できるすべての値を指定するために使用されます。

    例えば、「hour=*+10」ならば 「hour=10,11,12,13,14,15,16,17,18,19,20,21,22,23」です。

  • インターバル(一定間隔)の値:

    */INTERVAL]のような値は、トークン(時間単位)の可能な範囲で、 繰り返すインターバル(一定間隔)の最小値を指定して使います。

    例えば、「minute=*/5」は、 「"minute=0,5,10,15,20,25,30,35,40,45,50,55"」と同じで、「5分毎」にタイマーが発生されます。

  • インターバル(一定間隔)の値(オフセットで開始):(バージョン 3.5.25)

    *+OFFSET/INTERVAL]のような値は、トークン(時間単位)の可能な範囲で、 開始オフセットと繰り返すインターバル(一定間隔)の最小値を指定して使います。

    例えば、「minute=*+3/5」は、 「minute=3,8,13,18,23,28,33,38,43,48,53,58」と同じで、 タイマーは3分目に開始し、それ以降に5分毎に発生されます。

  • 値の範囲:(バージョン 3.5.25)

    LOW-HIGH」のような値は値の範囲を指定するために使用されます。

    例えば、「minute=5-8」ならば「minute=5,6,7,8」です。

  • 値のリスト:(バージョン 3.5.25)

    上記のいずれもコンマ区切りリストにまとめることができます。

    例えば、「minute=*/10,*+2/10ならば 「"minute=0,2,10,12,20,22,30,32,40,42,50,52」です。

    minute=1-3,10-12"」ならば「minute=1,2,3,10,11,12」です。

    minute=2-5,*/10」ならば「minute=0,2,3,4,5,10,20,30,40,50」です。

ほとんどのケースでは、 必ずしも、全てのインターバル(一定間隔)のトークン(時間単位)を宣言する必要はありません。 トークンが省略された場合、それより上位レベルのトークンの範囲には[*]のデフォルト値が適用され、 それより下位レベルのトークンの範囲には最小値が適用されます。

次の宣言はどれも同類です:
wrapper.timer.1.interval=hour=4
wrapper.timer.1.interval=hour=4; minute=0; second=0
wrapper.timer.1.interval=day-of-week=*; hour=4
wrapper.timer.1.interval=day-of-week=*; hour=4; minute=0; second=0

wrapper.timer.max_catchup プロパティ

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

システム時間が変更された場合、その時間の範囲内に一つ、或いは複数のスケジュールされていたイベントがある可能性があります。 Wrapper では、イベントを立て続けに実行して、全てのイベントの完了を試みます。 その実行数が多い場合、望まない結果を引き起こすことがあります。

このプロパティでは、タイマーが一気に実行する最大時間数を設定することが可能です。 デフォルト値は「60秒」です。

設定例:(60秒)
wrapper.timer.max_catchup=60

注意

Wrapper が、バージョン 3.5.29 より、 夏時間やタイムゾーンの変更に伴い、システム時間の設定を先に進めたり遅れたりると、 スキップまたは繰り返される時間の範囲内に設定してあった複数のタイマーイベントを 追いつくために新しいメソッドを使用します。

夏時間に変更するために時計を先に進めると、スキップされた時間帯に日次でスケジュールされたタイマーだけが 一気に実行されます。

同じように、時計を送れると、日次でスケジュールされているタイマーは繰り返し実行されません。

該当するタイマーは、「時間」(hour)、或いは「分」(minute)の指示子に「*」を使用しない、また、 曜日(day-of-week)或いは時間(hour)が設定しているタイマーです。

注意

Wrapper バージョン 3.5.24 より以前のバージョンに問題がありました。 キャッチアップインターバル(一定間隔)にタイマー実行スケジュールが設定されていた場合、 タイマー実行を停止するという問題を起こすことがありました。 その問題を避けられるように、このプロパティには大きな値を設定すべきです。 「3600」秒の値を設定すれば、タイムゾーンの変更時の問題を避けられるでしょう。