「ASP.NET/定期的にTaskを実行する」の内容を、QuizMLに試験的に実装し、ASP.NETで非同期実行ができることがわかりました。じゃぁ、J2EEではどうなんだ? ということで、やってみました。

java.util.TimerをServletで使う

  1. まず、java.util.TimerTaskクラスを継承、runメソッドを実装したクラスを作成し、runメソッド内に実行したいタスクを記述します。
  2. Servlet内でTimerインスタンスを生成し、上で作成したTaskを登録するだけです。
    Timer timer1 = new Timer();
    timer1.scheduleAtFixedRate(new Task01(config.getServletContext()), firstTime, peroid); 
    • サンプルサーブレット fileTimerTestServlet01.java
    • ※1 開始時刻として過去の時刻を設定すると、その時刻から現在時刻までの実行されたはずの回数分が、スケジュール登録時に一気に実行されてしまいます。開始時刻は、未来時刻になるようにするのが好いでしょうね。

問題点

Globus Toolkitに含まれているcommonj実装

 必要なパーツをうまく抽出できません ...orz

myFoo.deで配布されているcommonj実装

 Tomcat5.5を用い、<Context>(server.xml)およびweb.xmlで<Resource>設定をし、TimerManagerインスタンスの取得はできているようなのですが、java.lang.IllegalMonitorStateException が出まくります ...orz


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS