パッケージ jakarta.ejb

アノテーションインターフェース Schedule


cron のような時間式に基づいたタイムアウトスケジュールを使用して、自動作成のタイマーをスケジュールします。アノテーション付きメソッドは、タイムアウトコールバックメソッドとして使用されます。

このアノテーションのすべての要素はオプションです。何も指定されていない場合、永続タイマーが作成され、アプリケーションが実行されているコンテナーに関連付けられたデフォルトのタイムゾーンで毎日深夜にコールバックが発生します。

スケジュール仕様を構成する要素は 7 つあり、以下のとおりです。さらに、timezone 要素を使用して、スケジュール指定が評価されるコンテキストでデフォルト以外のタイムゾーンを指定できます。persistent 要素を使用して非永続タイマーを指定できます。info 要素を使用して、タイマーコールバックが発生したときに取得できる追加情報を指定できます。

カレンダベースのスケジュール自体を指定する要素は次のとおりです。

  • 秒: 1 分以内に 1 秒以上

    許容値: [0,59]

  • 分: 1 時間以内に 1 分以上

    許容値: [0,59]

  • 時間: 1 日のうち 1 時間以上

    許容値: [0,23]

  • dayOfMonth : 月内の 1 日以上

    許容値:

    • [1,31]
    • [-7, -1]
    • " 最終 "
    • {"1st", "2nd", "3rd", "4th", "5th", "Last"} {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}

    「最終」は月の最終日を意味します

    -x(x は [-7、-1] の範囲内)は、月の最終日の x 日前を意味します

    曜日に "1st"、"2nd" などを適用すると、その月のその日の 1 回の出現を識別します。

  • 月: 1 年以内の 1 か月以上

    許容値:

    • [1,12]
    • {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", Dec"}
  • 曜日: 1 週間に 1 日以上

    許容値:

    • [0,7]
    • {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}

    "0" と "7" はどちらも日曜日を指します

  • 年: 特定の暦年

    許容値: 4 桁の暦年

各要素は、次のいずれかの形式で表される値をサポートします

  • 単一値。これにより、属性が可能な値の 1 つだけに制約されます。
    
     Example: second = "10"
     Example: month = "Sep"
     
  • ワイルドカード。"*" は、特定の属性に許可されるすべての値を表します。
     Example: second = "*"
     Example: dayOfWeek = "*"
     
  • リスト。これにより、属性が 2 つ以上の許容値または範囲に制限され、文字列内の区切り文字としてコンマが使用されます。リスト内の各項目は、単一の値または範囲である必要があります。リストアイテムは、リスト、ワイルドカード、増分にすることはできません。重複する値は無視されます。
     Example: second = "10,20,30"
     Example: dayOfWeek = "Mon,Wed,Fri"
     Example: minute = "0-10,30,40"
     
  • 範囲。これにより、属性が値の包括的な範囲に制限され、範囲の両端がダッシュで区切られます。範囲の両側は単一の属性値である必要があります。範囲のメンバーは、リスト、ワイルドカード、範囲、増分にすることはできません。x が "x-y" の範囲で y よりも大きい場合、範囲は "x-max, min-y" と同等です。ここで、max は対応する属性の最大値であり、min は最小値です。両方の範囲値が同じである範囲 "x-x" は、単一の値 x に評価されます。曜日の範囲 "0-7" は、"*" と同等です。
     Example: second = "1-10"
     Example: dayOfWeek = "Fri-Mon"
     Example: dayOfMonth = "27-3" (Equivalent to "27-Last , 1-3")
     
  • インクリメント。スラッシュは、開始点と間隔に基づいて属性を制約し、それぞれ分、時間、日の内の N 秒、分、または時間ごとに指定するために使用されます。式 x/y の場合、属性は、時刻 x から始まる許容値のセット内のすべての y 番目の値に制約されます。x 値は包括的です。ワイルドカード文字(*)は x 位置で使用でき、0 と同等です。インクリメントの使用は、secondminutehour 要素内でのみサポートされています。second および minute エレメントの場合、x および y はそれぞれ [0,59] の範囲内にある必要があります。hour エレメントの場合、x と y はそれぞれ [0,23] の範囲内にある必要があります。
     Example: minute = "∗/5" (Every five minutes within the hour)
     
    これは: minute = "0,5,10,15,20,25,30,35,40,45,50,55"
     Example: second = "30/10" (Every 10 seconds within the minute, starting at second 30)
     
    これは: second = "30,40,50"

    その属性の最大値を超えると、一致する増分値のセットが停止することに注意してください。境界を越えて「ロールオーバー」することはありません。

     Example : ( minute = "∗/14", hour="1,2")
     

    これは: (minute = "0,14,28,42,56", hour = "1,2") (午前 1 時と午前 2 時の間、1 時間以内に 14 分ごと。)

次の追加ルールがスケジュール指定要素に適用されます。

  • dayOfMonth 要素に非ワイルドカード値があり、dayOfWeek 要素に非ワイルドカード値がある場合、dayOfMonth 値または dayOfWeek 値のいずれかに一致する日が適用されると見なされます。
  • 文字列定数と数値を除いて、空白は無視されます。
  • すべての文字列定数("Sun""Jan""1st" など)では大文字と小文字は区別されません。

スケジュールベースのタイマー時間は、アプリケーションが実行されているコンテナーに関連付けられているデフォルトのタイムゾーンのコンテキストで評価されます。スケジュールベースのタイマーは、オプションでこのデフォルトを上書きし、特定のタイムゾーンに関連付けることができます。スケジュールベースのタイマーが特定のタイムゾーンに関連付けられている場合、コンテナーが実行されているデフォルトのタイムゾーンに関係なく、そのすべての時間はそのタイムゾーンのコンテキストで評価されます。

Schedule アノテーションが適用されるタイムアウトコールバックメソッドには、次のいずれかのシグネチャーが必要です。<METHOD> はメソッド名を指定します。

 void <METHOD>()
 void <METHOD>(Timer timer)
 
タイムアウトコールバックメソッドには、パブリック、プライベート、保護、パッケージレベルのアクセスがあります。タイムアウトコールバックメソッドは、final または static として宣言してはなりません。タイムアウトコールバックメソッドは、アプリケーション例外をスローしてはなりません。
導入:
EJB 3.1
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    1 か月内の 1 つ以上の日を指定します。
    1 週間以内の 1 日以上を指定します。
    1 日のうち 1 時間以上を指定します。
    タイマーに関連付けられている情報文字列を指定します
    1 時間で 1 分以上を指定します。
    1 年以内に 1 つ以上の月を指定します。
    boolean
    作成されるタイマーが永続的であるかどうかを指定します。
    1 分以内に 1 秒以上を指定します。
    スケジュールが評価されるタイムゾーンを指定します。
    1 つ以上の年を指定します。
  • 要素の詳細

    • second

      StringSE second
      1 分以内に 1 秒以上を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "0"
    • minute

      StringSE minute
      1 時間で 1 分以上を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "0"
    • hour

      StringSE hour
      1 日のうち 1 時間以上を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "0"
    • dayOfMonth

      StringSE dayOfMonth
      1 か月内の 1 つ以上の日を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "*"
    • month

      StringSE month
      1 年以内に 1 つ以上の月を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "*"
    • dayOfWeek

      StringSE dayOfWeek
      1 週間以内の 1 日以上を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "*"
    • year

      StringSE year
      1 つ以上の年を指定します。
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      "*"
    • timezone

      StringSE timezone
      スケジュールが評価されるタイムゾーンを指定します。タイムゾーンは ID 文字列として指定されます。必要なタイムゾーン ID のセットは、パブリックドメイン zoneinfo データベースのゾーン名(TZ)列によって定義されます。

      タイムゾーンが指定されていない場合、スケジュールは、アプリケーションが実行されているコンティナーに関連付けられたデフォルトのタイムゾーンのコンテキストで評価されます。

      戻り値:
      StringSE オブジェクト。
      デフォルト:
      ""
    • info

      StringSE info
      タイマーに関連付けられている情報文字列を指定します
      戻り値:
      StringSE オブジェクト。
      デフォルト:
      ""
    • persistent

      boolean persistent
      作成されるタイマーが永続的であるかどうかを指定します。
      戻り値:
      ブール値。
      デフォルト:
      true