Reagendamento no quartz

4 respostas
Fox_McCloud

Como eu posso reagendar uma tarefa que já foi agendada no Quartz, fornecendo uma nova Cron Expression, sem reiniciá-lo, ou ao servidor de aplicações?

4 Respostas

E

Até onde eu sei ele não tem essa funcionalidade, eu estou trabalhando em algo q possa resolver tal problema através de OSGi.
http://www.javaworld.com/ifind/java/query.html?qm=0&st=1&nh=10&col=java&qt=OSGi&x=0&y=0&=Go

Fox_McCloud

Euler Homero:
Até onde eu sei ele não tem essa funcionalidade, eu estou trabalhando em algo q possa resolver tal problema através de OSGi.
http://www.javaworld.com/ifind/java/query.html?qm=0&st=1&nh=10&col=java&qt=OSGi&x=0&y=0&=Go

Hum… e o método rescheduleJob()? Não serve para isso?

:?:

Job scheduling with Quartz

E

Acho q naum, mas testa ai e me fala se resolveu ou naum pq eu estou trabalhando em uma aplicação para resolver esse tipo de problema.

gbvbahia01

Bom como este tópico não tem a solução para o problema e não achei um exemplo simples desta necessidade, segue um exemplo de reagendamento no Quartz:

import java.text.ParseException;
import java.util.Date;

import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

public class Tarefa implements Job
{
    static Scheduler agendador;
    static JobDetail detalhe = new JobDetail("Tarefa exemplo", Scheduler.DEFAULT_GROUP, Tarefa.class);
    static CronTrigger trigger;
    static
    {
        try
        {                                                               //A cada 1 segundo
            trigger = new CronTrigger("MyTrigger",Scheduler.DEFAULT_GROUP,"0/1 * * * * ?");
            agendador = StdSchedulerFactory.getDefaultScheduler();
        }
        catch (Exception e)
        {

        }
        trigger.setName("Trigger exemplo");
        trigger.setStartTime(new Date());
    }

    public void execute(JobExecutionContext arg0) throws JobExecutionException
    {
        System.out.println("Disparou:" + new Date());
    }

    public static void main(String[] args) throws SchedulerException, ParseException
    {
        agendador.scheduleJob(detalhe, trigger);
        agendador.start();

        try
        {
            Thread.sleep(1000 * 10);
        }
        catch (Exception e)
        {

        }
        System.out.println("Alterando Triger");                     //A cada 5 segundos
        trigger = new CronTrigger("MyTrigger",Scheduler.DEFAULT_GROUP,"0/5 * * * * ?");
        trigger.setJobName("Tarefa exemplo");
        trigger.setStartTime(new Date());
        agendador.shutdown();
        agendador = StdSchedulerFactory.getDefaultScheduler();
        agendador.scheduleJob(detalhe, trigger);
        agendador.start();
    }

}
Criado 6 de agosto de 2008
Ultima resposta 27 de jul. de 2010
Respostas 4
Participantes 3