2015-09-11 1 views
0

Je remarque que parfois, le planificateur à quartz arrête automatiquement certaines tâches. Est-ce un bug ou un problème de configuration?Planificateur de quartz interrompant le travail en cours à l'arrêt?

Tous les travaux planifiés utilisent CronTrigger.

Je soupçonne que chaque fois que le serveur est arrêté, il peut s'arrêter automatiquement en cours d'exécution? J'ai le code suivant pour ServletContextListener pour l'arrêt de l'application.

public void shutdownScheduler(Scheduler scheduler) { 
    try { 
     if (null != scheduler) { 
      scheduler.shutdown(); 
     } 
    } catch (Exception e) { 
     log.error(e); 
    } 
} 

Certaines des propriétés de quartz sont énumérés ci-dessous ...

org.quartz.scheduler.wrapJobExecutionInUserTransaction = false 
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool 
org.quartz.threadPool.threadCount = 20 
org.quartz.threadPool.threadPriority = 5 
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true 
org.quartz.jobStore.misfireThreshold = 60000 

Répondre

1

Oui, il ne passe en mode veille par défaut. Si vous vérifiez le code, vous verrez que l'une des premières choses que fait le code après avoir appelé shutdown est l'appel de la fonction standby().

Si vous voulez éviter ce behaviur, vous avez la possibilité d'appeler l'arrêt avec un paramètre:

shutdown(true) 

qui forcera le Scheduler à attendre pour les travaux en cours d'exécution pour terminer premier. Confirmation est dans le doc, mais pas trop sur les détails, malheureusement.

+0

Mais cela ne déclenche pas 'jobPaused', ce qui est le principal problème pour moi. – gpa

+0

Que voulez-vous dire par "raise jobPaused"? –

+0

l'architecture du produit courant est autour de 'SchedulerListener' et il y a d'autres logique de produit local à exécuter si SchedulerListener.jobPaused est déclenché par Quartz Scheduler. On dirait que Quartz soulève cela de façon intermittente. – gpa