« 安部総理辞任にまつわる鳩山さんのお茶目なコメント | Main | シマウマの縞 蝶の模様/ ショーン ・B・ キャロル »

アプリケーションサーバで1分間隔の処理をする

相変わらずJavaはさっぱりわからないのにJavaのWebアプリでインフラをやってるわけですが、アプリチームのOK-Bayさんからこんな相談をされたわけです。

「アプリケーションサーバの中で、定期的にDBのテーブルにデータがあるかどうかウォッチしたいんだけど」

-後半は別に普通なんですが、何でそれをアプリケーションサーバの中でやるんです?

「アプリケーションサーバの中にあるアプリの機能を呼びたいから。理由は恥ずかしくてとても口に出せない」

今回のアプリはEJBなしのStrutsベースです。もちろんブラウザ越しのアクセスがトリガーにならないと処理は動きません。なんか方法があるのかなあ?近所にいた同期のSEQちゃんに聞いてみました。

「昔、やったプロジェクトではループになるサーブレットを書いて、アプリケーションサーバが起動したあとにそいつに一度だけアクセスしてやるって方法をやったことありますね」

なるほどね。でも、それなら一定間隔ごとにServletにアクセスしてやるほうがいいんじゃないか?

「それでもいいと思うよ。止めたいときに自由に止められますしね。ただし、アプリケーションサーバを止めてる間はアクセスエラーになるから、そのあたりをうまくハンドルしないと運用がめんどくさそう」

もっともな意見だ。アプリケーションサーバの中でクローズすればそれに越したことはない気がします。

一定時間ごとの処理ねえ・・・昔、VBをやっていたときにはタイマーをぷちっと貼ってたなあ。Javaにもタイマーってあるのかな?・・・java.util.Timerってのがありますな。これを使えばいいのか?ちょっと詳しそうな奴に聞いてみましょう。後輩の破老酒がいいかな?ちょっと相談にのってくれー

「ふむ。でも、これって独自のスレッドを作っちゃうからアプリサーバの中で動かすのはあんまり良くない気がしますよ?それに、今使ってるアプリサーバはWAS(Websphere Application Server)ですけど、これの管理コンソールにスケジューラーってリソース項目があるんですよね・・・。あんまり使ってるって聞いたことないですけど」

なるほど・・・。確かに自前でTimerオブジェクトを作ったとしても、そのライフサイクルは親スレッドに依存しちゃう。それでは無限ループのServletを作るのと本質的に変わらないわけですから、アプリケーションサーバが管理してくれる仕組みがあれば、それはそっちの方がいいですよね

というわけで、例によって解析機関Gに問い合わせ。するとcommonj.timers.TimerManagerなんてのがあることがわかりました。CommonJってのはTimer and Work Manager APIのことで、アプリケーションサーバでエンタープライズアプリケーションを動かそうとするBEAとIBMが考えたAPIのことらしい。IBMも絡んでるので、当然WASでも使えます(v6からだけど)。管理コンソールの項目はきっとコレのことにちまいない。

使い方は、この辺を見てもらえばいいと思うんですが、アプリケーションサーバに定義をしておいた上で

  1. TimerListenerを初期化。コールバック先はここに登録
  2. JNDIを使って呼び出して、TimerManagerを初期化。その際にTimerListenerを渡す
  3. TimerManagerにスケジュールを登録

という手順です。クラスターでの動作も、ジョブを入れるDBを用意してやれば可能らしい。ほうほう

でも、結局、OSのスケジューラーを使ってServlet呼んじゃいそうな気がしています。だってそっちのほうが簡単だし、Javaわからないし~

誰か、「そういうときはこうやってやるのが普通じゃ!」というやり方を知ってたら教えてくださいませ

|
|

« 安部総理辞任にまつわる鳩山さんのお茶目なコメント | Main | シマウマの縞 蝶の模様/ ショーン ・B・ キャロル »

パソコン・インターネット」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/47905/16443864

Listed below are links to weblogs that reference アプリケーションサーバで1分間隔の処理をする:

« 安部総理辞任にまつわる鳩山さんのお茶目なコメント | Main | シマウマの縞 蝶の模様/ ショーン ・B・ キャロル »