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
InformationsquelleAutor Yaniv Cohen | 2010-08-06
Schreibe einen Kommentar