2010-01-11 24 views
22

En una aplicación web java (servlets/spring mvc), utilizando tomcat, ¿es posible ejecutar un servicio de tipo cron job?¿Es posible ejecutar un trabajo cron en una aplicación web?

p. Ej. cada 15 minutos, purgue la base de datos de registro.

¿Se puede hacer de una manera independiente del contenedor o se debe ejecutar utilizando tomcat u otro contenedor?

Especifique si el método está garantizado para ejecutarse en un momento específico o uno que se ejecute cada 15 minutos, pero puede reiniciarse, etc. si la aplicación se recicla (así es en .net si usa temporizadores)

+2

¿No estás seguro de por qué esto ha sido desestimado? +1 – ryber

Respuesta

11

Como se documenta en Chapter 23. Scheduling and Thread Pooling, Spring tiene soporte de programación a través de clases de integración para el Timer y el Scheduler de Quartz (http://www.quartz-scheduler.org/). Para necesidades simples, recomiendo ir con el JDK Timer.

Tenga en cuenta que los programadores de Java se utilizan generalmente para desencadenar trabajos orientados a los negocios de Java . Para las tareas de administrador del sistema (como el ejemplo que proporcionó), realmente debería preferir las herramientas de administración cron y tradicional (bash, etc.).

+0

+1 para cron. (15 caracteres) –

0

Será específico del contenedor. Puede hacerlo en Java con Quartz o simplemente usando las utilidades concurrentes de programación de Java (ScheduledExecutorService) o como un trabajo cron de nivel de sistema operativo.

Cada 15 minutos parece extremo. Generalmente, también le aconsejo que trunque/elimine archivos de registro que ya no se escriben (y generalmente se transfieren de la noche a la mañana).

+0

cletus, el archivo de registro fue solo un ejemplo, pero tiene un punto. ¿Se ejecutaría el ScheduledExecutorService en un intervalo fijo/garantizado, o depende del reciclaje de la aplicación, etc.? – mrblah

0

Los trabajos están orientados por lotes. Ya sea por disparo manual o cron-style (como parece querer).

Todavía no entiendo su relación entre la aplicación web y el trabajo al estilo cron? El único caso de uso de aplicaciones web en el que podría pensar es que desea tener un punto final HTTP para desencadenar un trabajo (pero esto se opone a su afirmación acerca de ser 'cron-style').

En general, utilice un marco dedicado, que resuelve el problema del área 'trabajos por lotes'. Puedo recomendar el cuarzo.

Cuestiones relacionadas