2011-02-13 26 views
5

私は、ある一定の間隔でn個のタスクを実行する必要があります。私はタスクを実行するのに必要な値を含むデータベースを持っています - javaと私はWindowsプラットフォーム上でApache Webサーバーを設定しています。スケジュールされた時刻にタスクを実行するjava、apache

誰かがこのタスクを達成するために私を導くことができますか?

答えて

4

Quartz apiをこの用途に使用できます。

Quartzは使いやすいスケジューリングAPIで、スケジューリングの初期化を行います。

millisecondとrepeatのジョブで簡単なトリガーを使用し、繰り返し間隔を設定できます。 Advance Trigger CronTriggerは全く同じunix cronで動作します。 CronTriggerでは、選択日を定義できます。毎週水曜日、金曜日、毎月、毎年。ここで

は、単純なサーブレット

web.xmlの

<web-app> 
<display-name>timer</display-name> 

    <servlet> 
    <servlet-name>InitializeServlet</servlet-name> 
    <servlet-class>com.cron.InitializeServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

</web-app> 

InitializeServlet.java

package com.cron; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 

public class InitializeServlet extends HttpServlet { 

public void init() throws ServletException { 

    try { 
     System.out.println("Initializing NewsLetter PlugIn"); 

     CronScheluder objPlugin = new CronScheluder(); 

    } 
    catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    } 

} 

CronScheludeとそれに

クォーツを使用する方法について説明したサンプルtutorialですあなたが経由でこれを行うことができますいずれかr.java

package com.cron; 

import org.quartz.CronTrigger; 
import org.quartz.JobDetail; 
import org.quartz.Scheduler; 
import org.quartz.SchedulerFactory; 
import org.quartz.impl.StdSchedulerFactory; 

public class CronScheluder { 

    public CronScheluder() throws Exception { 

     SchedulerFactory sf = new StdSchedulerFactory(); 

     Scheduler sche = sf.getScheduler(); 

     sche.start(); 

     JobDetail jDetail = new JobDetail("Newsletter", "NJob", MyJob.class); 

     //"0 0 12 * * ?" Fire at 12pm (noon) every day 
     //"0/2 * * * * ?" Fire at every 2 seconds every day 

CronTrigger crTrigger = new CronTrigger("cronTrigger", "NJob", "0/2 * * * * ?"); 

     sche.scheduleJob(jDetail, crTrigger); 
    } 
} 

MyJob.java

package com.cron; 

import org.quartz.Job; 
import org.quartz.JobExecutionContext; 
import org.quartz.JobExecutionException; 

public class MyJob implements Job { 

    public void execute(JobExecutionContext context) 
    throws JobExecutionException { 

     System.out.println("Cron executing "); 

    } 
} 
2

  • wgetを介して、あなたのアプリケーションの特定のURLを要求されるLinuxのcronジョブをかカール
  • スケジューリング用のJavaライブラリであるQuartz

また、apacheはあなたの要件とは関係がないようです。

関連する問題