タイマー コントロールを挿入するには、コード エディタを右クリックして [挿入|コントロール] を選択します。
TimerControlBean を使用してタイマー コントロールを挿入するには、次の手順に従います。
[プロパティー] ビューにタイマー コントロール (またはタイマー コントロール Bean) のプロパティを表示するには、次の手順に従います。
[プロパティー] ビューに入力される時間文字列は検証されません。時間は実行時でのみ検証されます。
タイマー コントロールは、会話形式で Serializable を実装する Web サービス内でのみ使用されます。詳細については、「会話形式の Web サービスの設計」を参照してください。
タイマー コントロールのパラメータを設定するアノテーションについては、「TimerControl.TimerSettings annotation」を参照してください。
以下のプロパティとメソッドの詳細については、「TimerControl インタフェース」を参照してください。
![]() |
![]() |
![]() |
||||||||||||||||||||
![]() |
|
![]() |
||||||||||||||||||||
![]() |
![]() |
![]() |
TimerControl には、3 つのメソッドがあります。
![]() |
![]() |
![]() |
||||||||
![]() |
|
![]() |
||||||||
![]() |
![]() |
![]() |
タイマー コントロールによって生成されるイベントは 1 つです。
![]() |
![]() |
![]() |
||||||
![]() |
|
![]() |
||||||
![]() |
![]() |
![]() |
TimerControlBean は、TimerControl インタフェースを実装し、以下の新しいメソッドとプロパティを提供します。
![]() |
![]() |
![]() |
|||||||||||||||
![]() |
|
![]() |
|||||||||||||||
![]() |
![]() |
![]() |
[プロパティー] ビューに表示されるプロパティ値を取得または設定するために、以下のメソッドが追加されています。
![]() |
![]() |
![]() |
||||||||||||||||||||||||||
![]() |
|
![]() |
||||||||||||||||||||||||||
![]() |
![]() |
![]() |
setTimerSettingxxx メソッドは、タイマーがすでに開始している場合には効果がありません。時間値を設定するには、タイマーを停止し、メソッドを呼び出して値を設定した後、タイマーを開始する必要があります。これは、新しいタイマー オブジェクトを作成するのではなく、既存のコントロールを再開するだけです。
repeatEverySecond と repeatEvery の両方が設定されている場合、エラーは発生せずに repeatEverySecond 値が使用されます。
timeout と timeoutSeconds の両方が設定されている場合、エラーは発生せずに timeoutSeconds 値が使用されます。
setTimeout または setTimeoutSeconds のメソッドで過去の絶対的な日付や負の時間値を設定すると、すぐにコールバックが発生します。
getTimerSettingxxx メソッドで、タイマーが実行中か停止中かを判別することができます。
以下は内部でのみ使用されるメソッドです。使用しないようにしてください。
![]() |
![]() |
![]() |
|||||||
![]() |
|
![]() |
|||||||
![]() |
![]() |
![]() |
TimerControlBean によって新たに生成されるイベントはありません。
相対時間値は、相対時間のタイムアウトと繰り返しの時間に使用されます。相対時間値は、[プロパティー] ビューを使用するか、TimerControlBean のメソッドを呼び出すことで設定します。
相対時間をテキスト文字列で指定すると、整数値の後に大文字と小文字を区別しない時間単位が付いた形式にフォーマットされます。時間単位は、スペースで区切ることができます。たとえば、以下のコード サンプルはすべての時間単位を省略しないで指定した有効な持続時間指定です。
@TimerControl.TimerSettings(timeout="99 years 11 months 13 days 23 hours 43 minutes 51 seconds") @Control() Timer almostCentury;
この例では、約 100 年経過した後に初めて発動するタイマー コントロールを作成します。
時間単位には省略形を使用することができます。たとえば、「months」の有効な省略形は「month」、「mont」、「mon」、「mo」、および「m」です。月と分の両方を指定する場合は、どちらを表すのか区別できるような省略形を使用します。
テキスト文字列は、先頭が「p」(大文字と小文字を区別しない) で始まる ISO 8601 拡張フォーマットを使用することもできます。その場合、1 文字からなる省略形を使用し、スペースを入れないで、年、月、日、時、分、秒の順番で指定しなければなりません (http://www.w3.org/TR/xmlschema-2/#duration を参照)。
以下のタイマー コントロール宣言は上の例と同じですが、完全省略形を使用しています。
@TimerControl.TimerSettings(timeout="P99Y11Mo13D23H43M51S") @Control() Timer almostCentury;
持続時間はグレゴリオ歴のルールに従って計算されるので、今日が 17 日であれば、今日から 3 か月後もその月の 17 日になります。対象となる月が短く、対応する日が存在しない場合 (2 月 31 日など)、同じ月の直近の日 (うるう年の 2 月 29 日など) が該当します。
タイマーが特定の時間 (絶対時間) に発動するように指定するには、setTimeoutAt メソッドを使用する必要があります。
絶対時間は、オペレーションを開始および終了する正確な時期が分かっている場合に役立ちます。たとえば、Web サービスに確認メールを送信させ、誰かの誕生日が近いことを通知するようアプリケーションで設定できます。java.util.Date オブジェクト (Java 1.5) で特定の時間を設定することができます。TimerSetting アノテーションでは java.util.Date フォーマットのタイムアウトを指定することはできないため、setTimeoutAt メソッドを使用する必要があります。詳細については、「TimerControlBean インタフェースのメソッドによるパラメータの設定」を参照してください。
TimerControl インタフェースには、WebLogic Workshop 8.1 アプリケーションとの下位互換性を維持するためのメソッド群が追加されています。ただし、これらのメソッドは推奨されていません。下位互換性のためのメソッドを以下に示します。
![]() |
![]() |
![]() |
||||||||||||||||||
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
WebLogic Workshop 8.1 では、すでに起動されているタイマーの start() メソッドを呼び出すと、新しいタイマー イベントを生成する可能性があります。Workshop 9.2、および 10 x では、すでに開始されているタイマー コントロールの start() を呼び出しても何の効果もありません。
ファイル weblogic_timer_control.jar には、タイマー コントロールの実装が含まれています。このファイルには、コントロールのインタフェースと実装、およびステートレス セッション Bean が定義されています。この JAR は、Web サービス プロジェクトの作成時に自動的にデプロイされます。
タイマー コントロール実装は、EJB 2.1 タイマー サービスを使用する com.bea.wlw.control.timer.EjbTimerControlImpl によって提供されます。コントロール Bean は、EJB ローカル インタフェースを使用して、ステートレス セッション Bean によるタイマーの作成と取り消しを委託します。タイマーが期限切れになると、セッション Bean の ejbTimeout メソッドが EJB コンテナによって呼び出されます。ejbTimeout メソッドは、タイマー作成時にタイマーで格納された ControlHandle を取得し、ControlHandle を使用してターゲットの TimerControl にコールバック イベントをディスパッチします。この実装は TimerControl が実行しているコンテナには依存しません。
タイマー コントロールは EJB 2.1 タイマー サービスをベースにしているため、要求に応じてクライアントにコールバックするために最善の努力をしますが、真のリアルタイム タイム サービスではありません。