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.
- jpaul's blog
- Inicie sesión o regístrese para enviar comentarios
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
Incluye lo que quieras en bat/shell. :)
+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.