Quartz Scheduler nicht beenden nach Herunterfahren
Ich bin mit dem derzeit neuesten Quarz 1.8.3 auf jboss 4.0.5.
Die Quarz-jobs sind persistent und werden in eine lokale Datenbank.
Wenn ich den shutdown-oder standby-Methode auf die Ausführung quartz scheduler-Objekt
jobs noch weiter zu führen, die durch den scheduler, nur, dass die jobs, Zustand leer ist und die Ausführung fehlschlägt.
Ich würde erwarten, dass (zumindest nach Quarz-API-Dokumentation), dass wenn ich auf Herunterfahren oder stellen Sie die scheduler -, standby -, dass die Arbeitsplätze, die zuvor geplant in die Datenbank nicht ausgeführt werden.
Wenn der Aufruf von shutdown-oder standby-scheduler ist nicht die Methode, das zu erreichen, was ist?
Die Arbeitsplätze nicht gerade zu beenden, die Ausführung aber eine geplante Aufträge weiterhin ausgelöst werden.
Hier ist zusätzliche info als gefragt:
public class QuartzNotificationsSchedulerBean implements NotificationsScheduler, ServletContextAware {
...
public String scheduleNotification(Notification notification) {
//Schedule the job with the trigger
try {
//Define job instance
String groupName = this.createNotificationGroupName(notification);
String triggerName = this.createNoficationTriggerName(notification);
String jobName = this.createNoficationJobName(notification);
JobDetail job = new JobDetail(jobName, groupName , ScheduledNotificationJob.class);
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.putAll(notification.getContext());
job.setJobDataMap(jobDataMap);
Calendar notificationTime = notification.getTime();
Trigger trigger = new SimpleTrigger(triggerName, groupName , notificationTime.getTime());
scheduler.scheduleJob(job, trigger);
return trigger.getName();
} catch (SchedulerException e) {
throw new NotificationScheduleException(e, notification);
}
return null;
}
public void setServletContext(ServletContext servletContext) {
this.sf = (SchedulerFactory) servletContext.getAttribute(QuartzInitializerListener.QUARTZ_FACTORY_KEY);
try {
scheduler = sf.getScheduler();
if(scheduler.isStarted() == false) {
scheduler.start();
}
} catch (SchedulerException e) {
logger.error("Failed to load Quartz scheduler ", e);
}
}
}
Folgende ist eine Kopie des Quarz-Konfiguration-Eigenschaften:
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = scheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.wrapJobExecutionInUserTransaction = true
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 45
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = FOR_QUARTZ
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.FOR_QUARTZ.jndiURL = java:jdbc/live-quartz
Hier ist ein Ausschnitt aus dem web.xml wo der Quarz ist, initialisiert:
<!-- START NOTIFICATION SERVICE -->
<context-param>
<param-name>config-file</param-name>
<param-value>wm_quartz.properties</param-value>
</context-param>
<context-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>
Dank
- Ok danke, ich wusste, dass
- Welche Art von quartz scheduler benutzt du? Könnten Sie die post initilization konnte der service und die Planer?
- sind nur die Aufträge, die ausgeführt vollenden Ihre Ausführung oder geplante jobs ausführen auch?
- können Sie einige der code mit Konfigurations-Details
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es irgendwelche jobs, die ausgeführt werden, wenn Sie Herunterfahren aufrufen, ob zu unterbrechen, diejenigen, die arbeiten oder nicht, hängt von der Eigenschaft
org.quartz.scheduler.interruptJobsOnShutdown
.Sehen http://jira.terracotta.org/jira/browse/QTZ-41?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel . Ich bin nicht in der Lage zu finden, die Dokumentation, die auf dieser.
Die andere Eigenschaft ist
org.quartz.scheduler.makeSchedulerThreadDaemon=true
, die shutdown-quartz scheduler, sobald Ihre aufrufende thread beendet wird. Ich weiß nicht, was passiert, um den Status der jobs.Wie bereits erwähnt in den Kommentaren, post code und Konfiguration, um klare Antwort.
können Sie verwenden
org.quartz.plugin.shutdownhook.cleanShutdown=TRUE
in Quarz-properties-Datei