2011-02-13 36 views
5

Tôi có yêu cầu ở đâu, tôi cần thực hiện các tác vụ n tại các khoảng thời gian nhất định. Tôi có một cơ sở dữ liệu chứa các giá trị cần thiết để thực thi nhiệm vụ - java và tôi có một máy chủ web Apache được cấu hình trên nền tảng Windows.chạy các tác vụ theo thời gian được lập lịch trình java, apache

Ai đó có thể vui lòng hướng dẫn tôi hoàn thành nhiệm vụ này.

Trả lời

4

Bạn có thể sử dụng Quartz api cho mục đích này.

Quartz đang lên lịch API dễ sử dụng và thực hiện lập lịch biểu.

Bạn có thể sử dụng trình kích hoạt đơn giản với mili giây và công việc lặp lại và đặt khoảng lặp lại. Trình kích hoạt trước CronTrigger hoạt động chính xác cùng một cron unix. Trong CronTrigger, chúng tôi có thể xác định, ngày được chọn, ví dụ: Thứ tư, thứ sáu hàng tuần, hàng tháng và hàng năm.

Đây là một mẫu tutorial giải thích làm thế nào để sử dụng nó

thạch anh với 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(); 
    } 

    } 

} 

CronSchelude 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

Bạn có thể làm điều này qua:

  • một công việc linux cron sẽ được yêu cầu một URL cụ thể của ứng dụng của bạn qua wget hoặc curl
  • Quartz, thư viện Java để lên lịch

Ngoài ra, apache dường như không có bất kỳ mối quan hệ nào với yêu cầu của bạn.

Các vấn đề liên quan