Dies sollte ziemlich einfach sein, aber ich sehe keine Arbeit ausgeführt wird. Ich habe einen Breakpoint auf der execute() -Methode der Aufgabe, kein Thread wird jemals dort. Ich verstehe nicht, was los ist.Quarz nicht feuern einfacher Auslöser
der Job
class Printer implements Job{
public Printer(){
System.out.println("created printer");
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("hi" + context.getFireTime());
}
}
Die Hauptklasse
class MyClass {
public static void main(String[] args) throws Throwable {
Scheduler s = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = newJob(Printer.class).build();
CronTrigger trigger =
newTrigger()
.withIdentity("a", "t")
.withSchedule(cronSchedule("0/5 * * * * ?").inTimeZone(TimeZone.getDefault()))
.forJob(job).build();
s.scheduleJob(job, trigger);
// This prints the right date!
System.out.println(trigger.getNextFireTime());
s.start();
}
}
EDIT: Ich entdeckte ich nicht die quartz.property Datei hatte, so gab es die Möglichkeit der Threadpool für Quarz war nicht erstellt. Deshalb, wie in documentation lesen, ersetzte ich den Code mit StdSchedulerFactory mit dem folgenden:
DirectSchedulerFactory.getInstance().createVolatileScheduler(10);
Scheduler s = DirectSchedulerFactory.getInstance().getScheduler();
was Guess? Kein Glück noch. Gleicher identischer Effekt. Anwendung bleibt am Leben, feuern nicht auslösen.
Beendet Ihr Programm nicht gerade? – Dariusz
Nein, weil ich den Scheduler nicht herunterfahre (in Zweck). – sscarduzio
Haben Sie tatsächlich bestätigt, dass Ihre Bewerbung nicht einfach nach 's.start()' endet? – Dariusz