在预定的时间运行任务java,apache

时间:2011-02-13 07:06:22

标签: java apache java-ee scheduled-tasks

我有一个要求在哪里,我需要以特定的时间间隔执行n个任务。我有一个数据库,其中包含执行任务所需的值 - java和我在Windows平台上配置的Apache Web服务器。

有人可以指导我完成这项任务。

2 个答案:

答案 0 :(得分:4)

您可以使用Quartz api进行此次广告宣传。

Quartz调度API易于使用,并进行调度初始化。

您可以使用毫秒级的简单触发器并重复作业并设置重复间隔。 Advance Trigger CronTrigger与unix cron完全相同。在CronTrigger中,我们可以定义选定的天数,例如:周三,周五,每周,每月和每年。

以下是解释如何使用

的示例tutorial

Quartz with Simple Servlet

的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();
    }

  }

}

CronScheluder.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 ");

    }
}

答案 1 :(得分:2)

您可以通过以下方式执行此操作:

  • 一个linux cron作业,它将通过wget或curl
  • 请求您的应用的特定URL
  • Quartz,一个用于安排的Java库

此外,apache似乎与您的要求没有任何关系。