2009-03-16 1 views
0

私は、Tomcatが起動するときに起動するJavaサーブレットプログラムを持っています。私は起動時にプログラムを負荷として説明しました。私はHTTPリクエストやレスポンスを使用していません。サービスとしてのサーブレットプログラム

私が必要とするのは、プログラムをサービスとして実行する必要があるか、一定の時間間隔で自動更新する必要があることです。どうやってするか?誰かが私を助けることができます!

ありがとう、 Gopal。

+0

何オートリフレッシュを意味しますか? tomcatがこれを行います。 – Tobias

答えて

0

Tomcatが自動私は時々、タイマーを使用する.warファイルが

0

を変更するたびに更新しないために、定期的にHTTPリクエストを行います

timer = new Timer(true); 
    timer.scheduleAtFixedRate(
     new TimerTask() { 
      URL url = new URL(timerUrl); 
      public void run() { 
       try { 
        url.getContent(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, 
     period, 
     period); 
1

私はQuartzを使用することをお勧めいたします。 Quartzを使用してスケジュールされたジョブを定義することができます。

import org.quartz.Scheduler; 
import org.quartz.SchedulerException; 
import org.quartz.impl.StdSchedulerFactory; 

public class QuartzTest { 
    public static void main(String[] args) { 
    try { 
     Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
     scheduler.start(); 

     scheduler.shutdown(); 
     } catch (SchedulerException se) { 
     se.printStackTrace(); 
     } 
    } 
} 
3

クォーツは素晴らしいアイデアですが、必要なものによっては多少の過度の可能性があります。実際の問題は、あなたが入ってくるHttpServletRequestsを実際に聞いていないときにサーブレットにサービスを詰め込もうとしていると思います。代わりに、あなたのサービスを起動するためのServletContextListenerを使用することを検討し、モーリスなどのタイマーは、提案:

のweb.xml:

<listener> 
    <listener-class>com.myCompany.MyListener</listener-class> 
</listener> 

そして、あなたのクラスには、次のようになります。

public class MyListener implements ServletContextListener { 

    /** the interval to wait per service call - 1 minute */ 
    private static final int INTERVAL = 60 * 60 * 1000; 

    /** the interval to wait before starting up the service - 10 seconds */ 
    private static final int STARTUP_WAIT = 10 * 1000; 

    private MyService service = new MyService(); 
    private Timer myTimer; 

    public void contextDestroyed(ServletContextEvent sce) { 
     service.shutdown(); 
     if (myTimer != null) 
      myTimer.cancel(); 
    } 

    public void contextInitialized(ServletContextEvent sce) { 
     myTimer = new Timer(); 
     myTimer.schedule(new TimerTask() { 
      public void run() { 
       myService.provideSomething(); 
      } 
     },STARTUP_WAIT, INTERVAL 
    ); 
    } 
} 
+0

QuartzとTimerTasker: Timerメカニズムは、実行ごとに新しいJobインスタンスを作成するQuartzとは対照的に、繰り返し実行する間に共有されるTimerTaskインスタンスを使用します。 – ariso

関連する問題