Timer Manager API

■イントロ
Java EE環境で利用可能なタイマー機能を実現するFW。
Timerの設定に応じてcallback methodを呼び出してくれるため
時刻/時間を指定して処理を自動的に起動したいケースに便利なソリューション。

※似た機能で Java SEのクラスTimerがある。
 Java SE#TimerをJava EEで使うのは避けること。
 ∵Java SE#Timerは内部でThreadクラスをを使用しているため
  Timerクラスを利用したSスレッドはJava EEコンテキストに関連付けられないから。

Timer Manager API
Java EEコンテキストを持つスレッドをタイマー駆動で実行できるようにする。
-->Java EE環境におけるTimerクラスの代替手段。


■Timer Manager API のインタフェース
commonj.timers.CancelTimerListener
commonj.timers.StopTimerListener
commonj.timers.Timer
commonj.timers.TimerListener
commonj.timers.TimerManager

TimerListenerTimerManagerが中心人物。

TimerListener
コールバックメソッドであるtimerExpiredメソッドを規定するもの。
開発者は TimerListenerインタフェースを実装して
タイマー駆動で処理したい内容をプログラム。

TimerManager
タイマー設定を行う為のインタフェース。
ネーミング・サービスを介して TimerManager実装クラスの参照取得する。
TimerManager実装クラスのscheduleメソッド(もしくはscheduleAtFixedRateメソッド)の引数に
TimerListener実装クラスと タイマー動作規定値を渡して
タイマー駆動の設定で行う仕組み。


■フロー
① ネーミング・サービスにTimerManager実装クラスを登録
② TimerManager実装クラスを利用するJava EEコンポーネントのDDファイル(web.xml)にリソースの参照を設定
③ TimerListener実装クラスの作成
④ TimerManagerAPIを利用するJava EEコンポーネントで ネーミングサービスからTimerManager実装クラスを参照取得
⑤ TimerManagerAPIを利用するJava EEコンポーネントで TimerManager実装クラスのschedule(||scheduleAtFixedRate)メソッドの呼び出し
⑥ TimerManager実装クラスのscheduleメソッドで指定したタイマー設定に応じて TimerListener実装クラスのTimerExpiredがコールバックされ 処理実行

□TimerManager#schedule/scheduleAtFixedRateメソッドの引数
 ・コールバックメソッドが最初に実行される時刻/最初に実行されるまでの遅延時間
 ・一度だけ実行されるか/繰返し実行されるか

□TimerListener#timerExpired
独立したスレッドとして処理を開始する。
スレッドには JavaEEコンテキストが渡される。
-->TimerManagerAPIでセキュリティやトランザクション等のJavaEEの各サービスが利用できる。


■タイマーのキャンセル
commonj.timers.Timer#cancel()でタイマー実行を終了できる。


■タイマーのライフサイクル
TimerManagerAPIが提供するタイマー機能には永続性はない。
→Workオブジェクトの場合と同様に
 アプリケーションサーバの遮断で 全てのタイマー設定が消失する。


ref:
http://www.itarchitect.jp/enterprise/-/31381-3.html

tag : Timer Manager API commonj TimerListener TimerManager

2009-03-09 23:49 : j2ee : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud