Servicios en Java
Hola a todos:
Estoy desarrollando una aplicacion de recuperación de información que necesita actualizar cada cierto tiempo los documentos de entrenamiento. Tengo una aplicación que se encarga de descargar los documentos. Lo que necesito es :
¿Cómo hacer que esta aplicación se ejecute automáticamente cada cierto tiempo?
- Inicie sesión o regístrese para enviar comentarios
Quizas te pueda Servir Quartz
Bueno la verdad yo solo e utilizado Quartz con Java-Email enviando correos a un cierto tiempo. Te dejo esta liga quizas te pueda servir.
.
Timer / TimerTask
Hay algunas alternativas... como dice ale_imp Quartz, otra es usando un cron en tu servidor(unix, info aqui ), un schedule task en windows... o si lo que quieres es escribir un poco de codigo, pues el siguiente ejemplo espero que te sirva.
Es un ejemplo muy simple, pero efectivo para realizar estas tareas. :)
Saludos
Alejandro
ScheduledExecutorService
A partir de Java 5 se recomienda usar ScheduledExecutorService en vez de Timer. En vez de TimerTask, toma como parámetro un Runnable.
Y quién lanza a Quartz en primer lugar?
Siempre he tenido una duda, quién ejecuta a Quartz en primer lugar?
Debe de estar corriendo siempre en alguna aplicación ( por ejemplo un application server ) y si este application server esta abajo pues ya valió?
O tiene hooks al sistema operativo para que se levante solo?
Nunca he usado Quartz, siempre con un
en unix la libraba y desde entonces me quedo esa duda.
cron > quartz
Quartz a fin de cuentas son clases de Java que están corriendo en una JVM, así que esa JVM tiene que estar corriendo todo el tiempo para que las tareas programadas en Quartz se ejecuten. Igual que un Timer o un ScheduledExecutorService.
Para correr un programita en Java que hace una tarea específica, cada X tiempo, puedes programarla en el crontab y ya (excepto en Winblows). Si tienes un contenedor JEE puedes poner ahí a correr varias tareas con Quartz. Lo chido de Quartz es que para programar una tarea le puedes pasar una cadena tipo crontab, por ejemplo para correr algo los sábados en la madrugada "0 5 * * 6" o para correr algo cada 15 minutos de las 9 AM a las 5PM de lunes a viernes "0/15 9-17 * * 1-5"
Ah vaya.
Entonces es como un Timer supervitaminado tipo Timer = lagartija, Quartz = hulk? jejej
Jerarquía
Más o menos: Timer < ScheduledExecutorService < Quartz
Quartz es un Timer con esteroides... el iPad de los timers... Timer on crack... etc. etc. Pero los otros dos sirven bastante bien para correr cualquier Runnable periódicamente de manera simple (aunque ya no se recomienda usar Timer, es medio obsoleto ya, sobretodo habiendo ScheduledExecutorServices que pueden tener un thread pool)
ScheduledExecutorService vs Timer
Creo que tocas un punto muuuy importante, que con ScheduledExecutorService puedes tener un thread pool y con Timer no, ahi esta la principal ventaja y diferencia.
Entonces... Quartz quedaria como la mejor opcion para este caso no? bueno... yo lo haria con un crontab ejejejeje.
Ipad de los timers jajajaja
Seeeehhh... yo también lo
Seeeehhh... yo también lo haría con el crontab que sería más bien como el walkman de los timers, no no , esperen, sería más bien como la grabadora de pilas de casette de los timer, de esas que llevaban al hombre para el break dance en los 80's, jejeje