Ich benutze die derzeit neueste Quarz 1.8.3 auf jboss 4.0.5. Die Quarzjobs sind persistent und werden in einer lokalen Datenbank gespeichert. Wenn ich die Shutdown- oder Standby-Methode für das ausführende Quarz-Scheduler-Objekt aufrufen, werden die Jobs weiterhin vom Scheduler ausgeführt, nur dass der Jobstatus leer ist und die Ausführung fehlschlägt.Quartz Scheduler nicht nach dem Herunterfahren
Ich würde (zumindest nach Quarz-API-Dokumentation) erwarten, dass wenn ich heruntergefahren oder den Scheduler Standby mache, dass Jobs, die zuvor in der Datenbank geplant wurden, nicht ausgeführt werden.
Wenn Herunterfahren oder Standby auf dem Scheduler nicht die Methode ist, um das zu erreichen, was ist das?
Die Jobs beenden nicht nur die Ausführung, sondern es werden weiterhin geplante Jobs ausgelöst.
sind hier zusätzliche Informationen wie 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);
}
}
}
Das Folgende ist eine Kopie der Quarz-Konfigurationseigenschaften
:#============================================================================
# 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 der web.xml, wo der Quarz 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>
Danke
Ok danke Datei, ich habe die –
Welche Art von Quarz-Scheduler verwenden Sie? Könnten Sie die Initialisierung des Dienstes und des Schedulers posten? – Falle1234
sind nur die laufenden Jobs ihre Ausführung beendet oder werden geplante Jobs auch ausgeführt? –