Carlos Andrés hace 6 años
Programar Tareas
Hola a todos, solicito una mano para que por favor me ayuden indicandome si existe alguna manera para programar tareas que se ejecuten en un determinado momento, adicional a esto si el servidor de aplicaciones lo bajan para una actualizacion o se cae por alguna situacion la tarea deberia de permanecer; esta tarea se podria programar con una fecha y hora especifica...?
Muchas Gracias.
Responder 4 respuestas
Que tal Carlos, ¿cómo va todo?
En efecto, en sistemas operativos UNIX-like como en el caso de todas las distribuciones Linux existe algo llamado **cron jobs**.
Que son precisamente tareas (dadas de alta mediante *scripts*) que se pueden ejecutar periódicamente.
Aquí te dejamos un artículo de la gente de [Digital Ocean donde dan unos ejemplos de configuración](https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-on-a-vps).
Asimismo un cron job se puede configurar para que se "prenda" automáticamente tras un reinicio de tu servidor.
Saludos.
Te dejamos aquí también un tutorial de youtube donde van explicando cómo configurar un **cron job** desde cero: [https://www.youtube.com/watch?v=ljgvo2jM234](https://www.youtube.com/watch?v=ljgvo2jM234).
La ventaja de este tipo de tareas es que son independientes al *Java Application Server*, lo que las hace ideales para ejecutar tareas que no son necesariamente concernientes a Java.
Ahora bien, si necesitaras ejecutar código Java recurrentemente en tu "tarea programada" entonces mi recomendación sería hacerlo con un *@Scheduled* de *Spring*, ya que de manera muy sencilla puedes crear código Java que se ejecute periódicamente.
Aquí tienes un [ejemplo del uso de *@Scheduled*](https://spring.io/guides/gs/scheduling-tasks/).
Por último, normalmente los servidores de aplicaciones de Java, usualmente incluyen mecanismos para realizar *scheduling*, mira por ejemplo en este enlace está la documentación oficial de IBM WebSphere Application Server: [Developing and Scheduling Tasks](https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/scheduler/tasks/tsch_developtasks.html).
Esto evidentemente no funcionaría en Tomcat o en JBoss de RedHat.
Saludos.
Por favor inicia sesión para participar en esta pregunta