Проблема при выполнении простого кварцевого планировщика - PullRequest
1 голос
/ 29 декабря 2010

Я изучаю фреймворк кварцевого планировщика, и в качестве основы я начал с «Hello World», который печатает через регулярные интервалы.

Это мой SampleScheduler

public class SampleScheduler {
public static void main(String arfs[]) {
    try {
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();
        System.out.println("Scheduler Started...");

        JobDetail job = new JobDetail("job1","group1",SampleJobInter.class);
        Trigger trigger = new SimpleTrigger("trigger1",Scheduler.DEFAULT_GROUP,new Date(),null,SimpleTrigger.REPEAT_INDEFINITELY,60L*1000L);
        scheduler.scheduleJob(job, trigger);
        scheduler.shutdown();
        System.out.println("Scheduler Stopped..");  
    } catch(SchedulerException e) {

    }

}
}

Вот мой SampleJobInter.class

public class SampleJobInter implements Job {

SampleJobInter(){}
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
    // TODO Auto-generated method stub
    System.out.println("Hello World at "+new Date());
}

}

Получаю вывод

Scheduler Started...
Scheduler Stopped..

Я не получаю желаемый результат. Я запускаю его в консоли. Нужно ли делать какие-либо конфигурации или как? Пожалуйста, помогите мне в этом

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Я создал его с нуля, и он работает хорошо. !!
Я бы посоветовал вам сравнить ваш код с этим и регистрировать исключение в catch, чтобы у вас была хорошая идея.

JobRunner

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.life.java.so.questions;

/**
 *
 * @author Jigar
 */
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;



public class HelloSchedule {

    public HelloSchedule() throws Exception {
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler sched = sf.getScheduler();
        sched.start();
        JobDetail jd = new JobDetail("myjob", sched.DEFAULT_GROUP, SampleJobInter.class);
        SimpleTrigger st = new SimpleTrigger("mytrigger", sched.DEFAULT_GROUP, new Date(),
                null, SimpleTrigger.REPEAT_INDEFINITELY, 100L);
        sched.scheduleJob(jd, st);
    }

    public static void main(String args[]) {
        try {
            new HelloSchedule();
        } catch (Exception e) {
        }
    }
}

Работа

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.life.java.so.questions;

import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

/**
 *
 * @author Jigar
 */
public class SampleJobInter implements Job {

    public SampleJobInter() {
    }

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.out.println("Hello World at " + new Date());
    }
}
1 голос
/ 29 декабря 2010

просто поставьте scheduler.start() после того, как вы запланировали запуск задания - scheduler.scheduleJob...

ОБНОВЛЕНИЕ : Я исправлен org.life.java. Порядок заявлений не будет иметь большого значения. Источником ваших неприятностей является shutdown() вызов. Контракт планировщика [ javadoc ] должен продолжать работать до тех пор, пока для него не будет выполнена явная команда shutdown . если вы удалите эту строку из своего кода, она будет работать нормально.

...