Pregunta

¿Cuál es la forma mejor / más fácil de ejecutar tareas periódicas (como un hilo de daemon) en un servidor tomcat / jetty? ¿Cómo comienzo el hilo? ¿Existe un mecanismo simple o es una mala idea?

¿Fue útil?

Solución

Está bien y efectivo esconder una instancia java.util.Timer (o mejor aún, ScheduledExecutor) en su ServeletContext. Créelo en una llamada init () de Servlet y todos sus servlets pueden agregarle TimerTasks.

Otros consejos

Si quiere mantener todo en Java, eche un vistazo a Quartz .
Maneja la conmutación por error y la repartición fina de trabajos, con la misma flexibilidad que los trabajos cron.

Una forma de propósito general que funciona para muchos sistemas es simplemente tener un trabajo cron que realiza un wget periódico contra su aplicación.

No puedo responder las cosas de tomcat / jetty, pero he hecho cosas similares con las aplicaciones web basadas en Python.

Normalmente solo ejecuto una aplicación separada que realiza las tareas periódicas necesarias. Si se necesita interoperabilidad entre el sitio web y la aplicación, esa comunicación puede ocurrir a través de algún tipo de API (usando algo como XML-RPC / unix sockets / etc) o incluso a través de la capa de la base de datos, si es adecuado.

Espero que eso ayude.

Si desea utilizar un trabajo cron pero no tiene acceso administrativo al sistema de desarrollo, puede hacer un crontab de usuario ejecutando el comando:

crontab -e

Utiliza vi por defecto en la mayoría de los sistemas, pero puede cambiarlo al editor de su elección a través de:

export EDITOR=/usr/local/bin/my_editor

Luego, al ejecutar el comando crontab -e se iniciará el archivo crontab en su editor. Al guardar, los cambios se confirmarán nuevamente en el cron del sistema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top