Problemas com quartz

Pessoal, eu to implementando um serviço com quartz mas qdo eu coloco um novo intervalo para a execução o mesmo não eh setado ao assim não ocnsigo usar o [color=red]rescheduleJob[/color].

Se alguem puder me ajudar, me dizer se eu estou implementando erro, agradeço, ae vai um pedacinho de cdg pra ajduar:

public void tasks() throws SchedulerException
    {
        // Initiate a Schedule Factory
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        // Retrieve a scheduler from schedule factory
        Scheduler scheduler = schedulerFactory.getScheduler();
        
        // current time
        long ctime = System.currentTimeMillis(); 
        
        // Initiate JobDetail with job name, job group, and executable job class
        JobDetail jobDetail = 
        	new JobDetail("jobDetail-s1", "jobDetailGroup-s1", SimpleQuartzJob.class);
        // Initiate SimpleTrigger with its name and group name
        SimpleTrigger simpleTrigger = 
        	new SimpleTrigger("simpleTrigger", "triggerGroup-s1");
        // set its start up time
        simpleTrigger.setStartTime(new Date(ctime));
        // set the interval, how often the job should run (10 seconds here) 
        simpleTrigger.setRepeatInterval(10000);
        // set the number of execution of this job, set to 10 times. 
        // It will run 10 time and exhaust.
        simpleTrigger.setRepeatCount(-1);
        // set the ending time of this job. 
        // We set it for 60 seconds from its startup time here
        // Even if we set its repeat count to 10, 
        // this will stop its process after 6 repeats as it gets it endtime by then.
       // simpleTrigger.setEndTime(new Date(ctime + 60000L));
        // set priority of trigger. If not set, the default is 5
        //simpleTrigger.setPriority(10);
        // schedule a job with JobDetail and Trigger
        scheduler.scheduleJob(jobDetail, simpleTrigger);
        
        
        // start the scheduler
        scheduler.start();
        }

e esta eh a classe q implementa o Job

public class SimpleQuartzJob implements Job {

public SimpleQuartzJob() {
}

public void execute(JobExecutionContext context) throws JobExecutionException {
    System.out.println("In SimpleQuartzJob - executing its JOB at " 
            + new Date() + " by " + context.getTrigger().getName());
    
 try {
	 Trigger trigger = context.getScheduler().getTrigger("jobDetail-s1", "jobDetailGroup-s1");
     SimpleTrigger simplet=(SimpleTrigger)trigger;
   [color=red] simplet.setRepeatInterval(2000);
     context.getScheduler().rescheduleJob("jobDetail-s1", "jobDetailGroup-s1",simplet);[/color]
     
} catch (Exception e) {
	// TODO: handle exception
}
}

Alguém poderia me dizer como faço para o rescheduleJob funcionar? :roll:

deixa eu tentar entender… rs (coloque o código dentro da tag code).

1º:
Estou achando estranho você recuperar a trigger e alterar o repeatInterval. Cuidado que você está alterando a “antiga trigger” também (você recuperou uma referência para ela). O correto é você criar uma nova trigger.

2º:
veja a assinatura do método rescheduleJpb:

rescheduleJob(java.lang.String triggerName, java.lang.String groupName, Trigger newTrigger).

Você está passando o dados do job e não o nome da trigger nos parâmetros…

tente assim:

 context.getScheduler().rescheduleJob("simpleTrigger", "triggerGroup-s1",simplet); 

t+

eu t entei deste jeito, mas nao funcionou
qdo chega no

simplet.setRepeatInterval(2000);

ele não continua lendo o cgd abaixo, eh como se ele parasse de ler e o método execute e voltasse a executar o task, pelo menos debugando eh isso q vejo.

Não entendo, o pq.

:roll:

você está criando uma nova trigger dentro do job como eu disse?

estou sim, dessa maneira

[quote]try {
Trigger trigger = context.getScheduler().getTrigger(“jobDetail-s1”, “jobDetailGroup-s1”);
SimpleTrigger simplet=( SimpleTrigger)trigger;

     SimpleTrigger t =  new SimpleTrigger();
     t.setRepeatInterval(2000);
     
    context.getScheduler().rescheduleJob("simpleTrigger", "triggerGroup-s1",t);
    	} catch (Exception e) {
	// TODO: handle exception
}[/quote]

não eh assim :?:

um… muito estranho…

tente criar a trigger informando no construtor o repeat assim:

SimpleTrigger Example 2 - Create a trigger that fires immediately, then repeats every 60 seconds, forever

SimpleTrigger trigger = new SimpleTrigger("myTrigger",
                                            null,
                                            new Date(),
                                            null,
                                            SimpleTrigger.REPEAT_INDEFINITELY,
                                            60L * 1000L);

veja mais em: http://www.opensymphony.com/quartz/wikidocs/TutorialLesson5.html

Obrigadinha Marcelo, mas tb não adiantou tah muito estranho,
nada funciona.

apenas uma pergunta:

você conseguiu este código em algum lugar ou foi você que fez?

peguei de um exemplo na internet :frowning:

passa pra gente o link de onde você pegou…

neste link
http://www-128.ibm.com/developerworks/java/library/j-quartz/index.html

Sei que esta thread é antiga… mas estou querendo resolver este “problema” de qualquer maneira.
Como posso garantir que uma Trigger para de ser executada em um determinado momento?
Por exemplo quero “settar” a hora de início que a trigger irá começara a rodar e a hora que ela vai acabar, mesmo se o Job não tiver acabado sua execução.