2011-02-13 12 views
5

Ho un requisito in cui in, ho bisogno di eseguire n compiti a determinati intervalli di volte. Ho un database che conterrà i valori necessari per eseguire l'attività - java e ho un server web Apache configurato su una piattaforma Windows.Esegui attività a tempo pianificato java, apache

Qualcuno potrebbe guidarmi per portare a termine questo compito.

risposta

4

È possibile utilizzare Quartz api per questo scopo.

Quartz è un'API di programmazione facile da utilizzare e consente l'inizializzazione della pianificazione.

È possibile utilizzare il trigger semplice con millisecondo e ripetere i lavori e impostare gli intervalli di ripetizione. Advance Trigger CronTrigger funziona esattamente come unix cron. In CronTrigger possiamo definire, giorni selezionati ad es. Mercoledì, Venerdì settimanale, mensile e annuale.

Ecco un esempio tutorial che spiega come usarlo

Quarzo con 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

è possibile farlo tramite:

  • un lavoro linux cron che sarà richiede un URL specifico della vostra applicazione tramite wget o arricciatura
  • Quartz, una libreria Java per la pianificazione

Inoltre, l'apache non sembra avere alcuna relazione con il tuo fabbisogno.