2011-03-09 1 views
0

Je suis en train de planifier un travail de quartz selon le plan suivant:Quartz Scheduing: Utilisation DailyCalendar

Job fonctionne tous les jours et ne doit être exécuté 09h30-18h00. J'essaie d'y parvenir via DailyCalendar. Voici ce que mon DailyCalendar ressemble:

DailyCalendar dCal = new DailyCalendar(startTimeString, endTimeString); 
dCal.setTimeZone(TimeZone.getDefault()); 
dCal.setInvertTimeRange(true); 

où commencent et les chaînes de la fin des temps sont au format HH: MM

Ensuite, j'essaie de planifier ce travail:

Scheduler myscheduler = StdSchedulerFactory.getDefaultScheduler(); 
SimpleTrigger trigger = new SimpleTrigger(); 
myscheduler.addCalendar("todcal", cal, true, true); 
trigger.setName("TRIGGER " + alertName); 
trigger.setJobName(alertName); 
trigger.setJobGroup(alertName); 
trigger.setCalendarName("todcal"); 
logger.info("Adding TOD job"); 
myscheduler.scheduleJob(trigger); // line causing exception 
myscheduler.start(); 

Dès scheduleJob est appelée Je vois l'exception suivante:

Based on configured schedule, the given trigger will never fire. 

La configuration me semble bien mais je ne peux pas trouver un exemple de code pour utiliser DailyCalendar afin que je puisse me tromper ici. S'il vous plaît aider

Répondre

2

Vous ne semblez pas définir un nombre de répétition ou répéter l'intervalle sur votre déclencheur. Il ne se déclenchera donc qu'une fois au moment présent (parce que vous n'avez pas défini d'heure de début future), ce qui se produit probablement pendant la période d'exclusion du calendrier - c'est pourquoi il serait calculé qu'il ne se déclenchera jamais.

+0

Merci pour l'indice, après avoir fourni le nombre de répétition et l'intervalle, j'ai pu planifier les travaux – cyberizen

0

Le travail s'exécute quotidiennement et ne doit être que exécuté entre 9h30 et 18h00.

À quelle fréquence le travail doit-il être exécuté dans ce délai? Une fois que? Une fois par heure? Toutes les 10 secondes?

Vous devez définir l'intervalle de répétition pour votre déclencheur. Regardez setRepeatInterval(long repeatInterval) méthode de SimpleTrigger. Il définit en millisecondes l'intervalle avec lequel le déclencheur va se répéter.

+0

Merci, après avoir fourni le nombre de répétition et l'intervalle, je pouvais planifier les emplois – cyberizen