Cuarzo - ¿Cómo apagar y reiniciar el programador? -- quartz-scheduler camp Relacionados El problema

Quartz - How to shutdown and restart the scheduler?


9
vote

problema

Español

Estoy obteniendo el programador de la siguiente manera:

  StdScheduler schedulerBean = (StdScheduler) ApplicationContextUtil.getBean(schedulerBeanName); schedulerBean.start();   

y luego

  main[main$subject_name=="UCOL10 | UCOL27 | UCOL29 | UCOL30",c(23,24)] #[1] eastings  northings #<0 rows> (or 0-length row.names) 0  

Después de ejecutar algunos otros códigos, entonces estoy llamando a Schedulerbean.Start () de nuevo.

Ahora, el código lanza el error: "org.quartz.schedulerexception: el programador no se puede reiniciar después de apagar () se ha llamado"

¿Podrías hacerme saber cómo solucionar el problema?

gracias de antemano, KATHIR

Original en ingles

I am getting the scheduler as follows:

StdScheduler schedulerBean = (StdScheduler) ApplicationContextUtil.getBean(schedulerBeanName); schedulerBean.start(); 

and later

schedulerBean.shutdown(); 

after executing few other codes, then i am calling schedulerBean.start() again.

Now the code throws the error - "org.quartz.SchedulerException: The Scheduler cannot be restarted after shutdown() has been called"

Could you please let me know how to fix the problem?

Thanks in advance, Kathir

  

Lista de respuestas

9
 
vote
vote
La mejor respuesta
 

Una vez que haya apagado un programador, no se puede reiniciar como hilos y otros recursos se destruyen permanentemente.

Puede leer el Cuarzo Programador API referencias Para encontrar el método que cubre sus necesidades. A continuación se puede encontrar algunos métodos disponibles.

  • standby() MÉTODO. Temporalmente detiene la activación de los disparadores del programador. Cuando se llama a inicio () (para llevar al programador fuera del modo de espera), no se aplicarán las instrucciones de activación Metire durante la ejecución del método Inicio (): cualquier error se detectará inmediatamente después (por el proceso normal de la tienda de trabajo) .
  • pauseJob(JobKey jobKey) - resumeJob(JobKey jobKey) . Haga una pausa en la cola de trabajo con la clave dada, al pausar todos sus factores desencadenantes actuales. En RESUMEJOB (JURSHEY TRABOYKEY) Si alguno de los trabajos se perdió uno o más intentos de fuego, entonces se aplicará la instrucción Malfire del disparador.
  • interrupt(JobKey jobKey) . Solicite la interrupción, dentro de esta instancia de programador, de todas las instancias ejecutoras actualmente del trabajo identificado, que debe ser un implementador de la interfaz InterruptableJob. Si actualmente se está ejecutando más de una instancia del trabajo identificado, se realizará el método interruptableJob # interrupción () en cada instancia. Sin embargo, existe una limitación de que en el caso de que interrumpir () en un caso lanza una excepción, todos los casos restantes (que aún no se han interrumpido) no tendrán su método de interrupción (). Si desea interrumpir una instancia específica de un trabajo (cuando se está ejecutando más de uno), puede hacerlo llamando a GetCurrentyExecutingJobs () para obtener un asa a la instancia de trabajo, y luego invocar la interrupción () en él usted mismo. Este método no es consciente del clúster. Es decir, solo interrumpirá las instancias del robo interrumpible identificado que se ejecuta actualmente en esta instancia de programador, no en todo el clúster.
  • unscheduleJob(TriggerKey triggerKey) . Retire el gatillo indicado desde el programador. Si el trabajo relacionado no tiene otros desencadenantes, y el trabajo no es duradero, entonces el trabajo también se eliminará.

Tenga en cuenta que puede crear un oyente que implementa la interfaz de ServleTContextListener para que:

  • Todos los trabajos se interrumpen y el programador se apaga cuando el contenedor se está cerrando
  • Se crea el programador y los trabajos están programados cuando se inicia el contenedor

En caso de que le gustaría crear un oyente que pueda proporcionar más detalles.

Espero que esto ayude.

 

Once you have shutdown a scheduler, it cannot be restarted as threads and other resources are permanently destroyed.

You may read the Quartz Scheduler API references in order to find the method which covers your needs. Below you can find some available methods.

  • standby() method. Temporarily halts the Scheduler's firing of Triggers. When start() is called (to bring the scheduler out of stand-by mode), trigger misfire instructions will NOT be applied during the execution of the start() method - any misfires will be detected immediately afterward (by the JobStore's normal process).
  • pauseJob(JobKey jobKey) - resumeJob(JobKey jobKey). Pause the JobDetail with the given key - by pausing all of its current Triggers. On resumeJob(JobKey jobKey) if any of the Job'sTrigger s missed one or more fire-times, then the Trigger's misfire instruction will be applied.
  • interrupt(JobKey jobKey). Request the interruption, within this Scheduler instance, of all currently executing instances of the identified Job, which must be an implementor of the InterruptableJob interface. If more than one instance of the identified job is currently executing, the InterruptableJob#interrupt() method will be called on each instance. However, there is a limitation that in the case that interrupt() on one instances throws an exception, all remaining instances (that have not yet been interrupted) will not have their interrupt() method called. If you wish to interrupt a specific instance of a job (when more than one is executing) you can do so by calling getCurrentlyExecutingJobs() to obtain a handle to the job instance, and then invoke interrupt() on it yourself. This method is not cluster aware. That is, it will only interrupt instances of the identified InterruptableJob currently executing in this Scheduler instance, not across the entire cluster.
  • unscheduleJob(TriggerKey triggerKey). Remove the indicated Trigger from the scheduler. If the related job does not have any other triggers, and the job is not durable, then the job will also be deleted.

Note that you can create a listener which implements the ServletContextListener interface so that:

  • all the jobs are interrupted and the scheduler is shutdown when the container is shutting down
  • the scheduler is created and the jobs are scheduled when the container is started

In case you would like to create such a listener I could provide more details.

I hope this helps.

 
 
     
     
0
 
vote

Simplemente elimine su objeto de programador después de schedulerBean.Shutdown() y llame a su método de programador nuevamente cuando lo hizo por primera vez.

  schedulerBean.Shutdown();        //do some work  schedulerBean = null; StdScheduler schedulerBean = (StdScheduler) ApplicationContextUtil.getBean(schedulerBeanName); schedulerBean.Start();   
 

Just delete your scheduler object after schedulerBean.Shutdown()and call your scheduler method again as you did it first time.

schedulerBean.Shutdown();        //do some work  schedulerBean = null; StdScheduler schedulerBean = (StdScheduler) ApplicationContextUtil.getBean(schedulerBeanName); schedulerBean.Start(); 
 
 

Relacionados problema

8  Hilo no administrado Spring Quartz WebSphere Hibernate  ( Unmanaged threads spring quartz websphere hibernate ) 
Parece que nuestra implementación de usar cuarzo - jdbcjobstore junto con la primavera, Hibernate y WebSphere está lanzando hilos no administrados. He hecho...

0  Propiedad inválida 'durabilidad' de la clase de frijoles [org.springFramework.scheduling.quartz.schedulerfactorybean]  ( Invalid property durability of bean class org springframework scheduling quar ) 
Estoy actualizando la primavera desde la primavera 2.x a la primavera 4.2.4 y el cuarzo de 1.8 a 2.3 Siguiendo los lanzamientos de frijoles "Durabilidad" in...

0  Error de la base de datos que se está recuperando de Misfires Qualtz  ( Database error recovering from misfires qualtz ) 
I Configuró el cuarzo para usar trabajos programados de la base de datos. Ahora, cuando comienzo el programador con: try { // Grab the Scheduler instance...

0  Clustering de cuarzo: acciones de programador visibles en todos los nodos  ( Quartz clustering scheduler actions visible on all nodes ) 
Estoy teniendo un problema; Tal vez puedas ayudarme. Básicamente, me gustaría saber si: La agrupación de cuarzo puede tener su gatillo cambiado dinámicam...

2  ¿Cómo crear mi propio contexto HTTP para un controlador?  ( How to create my own http context for a controller ) 
Estoy usando ASP.NET MVC 3 y Scheduler de cuarzo. actualmente tengo esto Un trabajo se crea y ejecuta. va a un controlador donde mapeo el dominio para ...

7  Formas de lidiar con el tiempo de ahorro de la luz del día con el gatillo de Cuarzo Cron  ( Ways to deal with daylight savings time with quartz cron trigger ) 
Tengo un gatillo de cuarzo cron que se ve así: git checkout {branch name}111 ¿Cómo debo resolver esto, si tengo varias configuraciones que suceden dentr...

0  Inicie el gatillo de cuarzo al día siguiente a la hora especificada  ( Start quartz trigger next day at specified time ) 
¿Cómo puedo hacer una pausa en mi gatillo de cuarzo y comenzarlo al día siguiente en su hora de inicio especificada? Por ejemplo. Mi expresión de Cron es * 0/...

21  cómo detener los trabajos programados por lotes de primavera se ejecute en un primer momento en el que ejecutar el código?  ( How to stop spring batch scheduled jobs from running at first time when executin ) 
Estoy usando la primavera lotes 2.2.4 con cuarzo para ejecutar algunos puestos de trabajo en un momento determinado el problema es que los puestos de trabaj...

1  Desencadenar un trabajo de cuarzo de la base de datos y no xml  ( Trigger a quartz job from database and not xml ) 
¿Cómo puedo activar un trabajo de la base de datos de Oracle en lugar de configurarlo en un archivo XML? ...

2  Uso de LINQ a consulta / Subquerición Múltiples métodos (Ejemplo de Cuarzo.net para grupos, trabajos y desencadenantes)  ( Using linq to query subquery multiple methods quartz net example for groups jo ) 
Definitivamente un Linq Newbie, pero muy experimentado con SQL y C # y preguntándose si esto es posible en Linq. Si es así, podría usarlo otros lugares, pero ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos