Estoy utilizando el último cuarzo 1.8.3 actual en jboss 4.0.5. Los trabajos de cuarzo son persistentes y se guardan en una base de datos local. Cuando llamo al método shutdown o standby en el objeto de planificador de cuarzo en ejecución los trabajos aún continúan ejecutándose por el planificador, solo que el estado de los trabajos está vacío y la ejecución falla.Programador de cuarzo que no se detiene después del cierre
Me esperaba (al menos según la documentación de la API de cuarzo) que cuando apago o hago que el planificador esté en espera, los trabajos programados previamente en la base de datos no se ejecutarán.
Si el apagado de llamada o el modo de espera en el programador no es el método para lograrlo, ¿qué es?
Los trabajos no solo terminan la ejecución, sino que continúan activándose los trabajos planificados.
Aquí hay información adicional como preguntó:
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);
}
}
}
La siguiente es una copia de las propiedades de configuración de cuarzo:
#============================================================================
# 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
Aquí hay un fragmento de la web.xml donde el cuarzo es inicializado:
<!-- 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>
Gracias
Ok gracias, lo hice –
¿Qué tipo de programador de cuarzo se utiliza? ¿Podría publicar la iniciación del servicio y el planificador? – Falle1234
son solo los trabajos en ejecución que terminan su ejecución o también se están ejecutando trabajos planificados? –