組み込み済みの GlassFish プラグインのおかげで、動作確認だけならほとんどコードを書かずに試行できる。
こんな風にする。(以下、プロジェクト名、クラス名等は適当)
■ EJB プロジェクト作成
以下の手順
- [New]/[EJB Project]
- 以下入力
Project name hello-ejb-timer Add project to an EAR チェック EAR project name hello-ejb-timerEAR - [Finish]
■ EJB Timer 作成
以下の手順
- hello-ejb-timer プロジェクトから[New]/[EJB Timer (Java EE 6)]
- パッケージとクラス名を適当に指定。
- "Schedule:" のテキストエリアをざっと眺める。デフォルトは以下のような感じで月~金の08時~23時なので、必要なら適当に直す。second="*/10", minute="*", hour="8-23", dayOfWeek="Mon-Fri", dayOfMonth="*", month="*", year="*", info="MyTimer"
■ 動かす
- Servers ビューで GlassFish に hello-ejb-timerEAR を追加
- Servers ビューから[Start]
- cygwin などで {Domain Directory}/domain1/logs/server.log を tail で垂れ流しておくと、10秒ごとにメッセージが出力されているのが観察できる。({Domain Directory} の位置は、GlassFish サーバをダブルクリックすると開く設定画面で[Browse]ボタンを押せばわかる。)
■ 所感
- とても簡単に cron ぽいスケジュール動作が実現できる。
- GlassFish も Eclipse plugin もすごく良い感じ。コード変更も瞬時に反映される。
- Servlet のみの Java Web アプリの定番のイディオムに、ServletContextListenerクラスで TimerTask の実行を開始する手法があるけど、EJB(3.1以上)が使える環境なら、やっぱり EJB Timer がシンプルで経済的な感じがする。
0 件のコメント:
コメントを投稿