Ejemplo básico Quartz 2.2.1 + Tomcat 7.0.54 (con edición de expresión cron)

Quartz es una utilería que permite calendarizar tareas, o en otras palabras, ejecutar una tarea cada cierto tiempo. Funciona sobre Java SE o Java EE. El siguiente ejemplo requiere de las siguientes librerías:

  • quartz-2.2.1.jar
  • slf4j-api-1.7.7.jar
  • slf4j-simple-1.7.7.jar

No se requiere el archivo  . Utiliza   y  .

Estructura

El proyecto tiene la siguiente estructura (siguiendo la estructura de un proyecto típico de eclipse):

 


 

El listener que aparece en este ejemplo es una subclase de listener de Quartz ( ) para aprovechar algunas de sus operaciones (en este caso es la configuración inicial).

 

Cuando la aplicación se inicia en el Tomcat, se ejecuta este listener. Después de ejecutar el código de la clase padre, se crea un Job (una referencia a la clase que contiene el código de la tarea a realizar) y también crea un Trigger utilizando una expresión cron . La expresión que aparece en este ejemplo ( ) le indica al calendarizador que debe ejecutar el Job cada minuto.

NOTA: Para cualquier otra expresión, puedes generar una nueva utilizando

Durante la ejecución del código padre de este listener, un atributo es colocado en el contexto de la aplicación. Este atributo es la fábrica del calendarizador. Para mayor información, veáse


 

La siguiente clase contiene el código de la tarea a realizar en el tiempo especificado (dependiendo del calendarizador).

 

Únicamente se imprime un mensaje con la fecha actual.


 

El servlet muestra un formulario para actualizar la expresión cuando se realiza una petición GET. Y actualiza la expresión durante la petición POST desde el formulario.

 


En ejecución

Si hacemos una petición GET, el navegador nos mostrará un formulario donde podemos introducir otra expresión:

Por ejemplo, si queremos que ejecute la tarea cada 5 minutos... Primeramente generamos la expresión (usando )

E introducimos la expresión generada en el formulario:

La pantalla mostrará la fecha de la siguiente ejecución:


Consideraciones

  • El tiempo mínimo de calendarización utilizando una expresión cron es 1 minuto.
  • Por defecto, el número máximo de trabajos ejecutándose al mismo tiempo con este método son 10.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de sr.bug

Servicio

Se que se puede usar esta libreria para hacer un demonio en linux o servicio en windows, alguna idea de como es el proceso para crearlo e instalarlo?

Ejecuta un shell/bat

  • En Windows, ejecuta un bat al iniciar el sistema.
  • Y en Linux, ejecuta un shell al iniciar el sistema.

      Incluye lo que quieras en bat/shell. :)

Imagen de gorlok

+1 a Quartz!

Siempre uso Quartz en mis proyectos para manejar las tareas periódicas, de una forma muy similar a la explicada aquí

Y también usamos algún evento de inicialización del contexto web para configurar la tarea. Doy fe que cumple lo que promete, Quartz es gauchito :)

Es un buen ejemplo: simple y didáctico.