Foros del Web » Programación para mayores de 30 ;) » Java »

Llamar a un metodo a cierta hora

Estas en el tema de Llamar a un metodo a cierta hora en el foro de Java en Foros del Web. Hola, he creado un contador de visitas totales y diarias en mi web, el problema que tengo es que para las diarias necesito que se ...
  #1 (permalink)  
Antiguo 18/08/2008, 02:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Llamar a un metodo a cierta hora

Hola, he creado un contador de visitas totales y diarias en mi web, el problema que tengo es que para las diarias necesito que se me ponga a 0 a las 0:00 de cada dia, pero no se como llamar a un metodo que se ejecute a esa hora exactamente y ponga el campo de la BD a 0.

¿Alguna idea?
  #2 (permalink)  
Antiguo 18/08/2008, 04:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Llamar a un metodo a cierta hora

Quartz, de OpenSymphony, o JScheduler, o hacer un miniprograma y llamarlo con el cron o las tareas automatizadas.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 18/08/2008, 06:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Perdona pero con eso que me comentas no me ayudas mucho, ya que no se que son todas esas cosas, todos no nacimos sabiendo. Te rogaria que me explicaras mas detalladamente.

Gracias.
  #4 (permalink)  
Antiguo 18/08/2008, 09:48
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Llamar a un metodo a cierta hora

Tambien puedes crear un hilo y mandarlo a dormir, y que cuando se despierte a las cero horas que reinicie tu contador
  #5 (permalink)  
Antiguo 18/08/2008, 10:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Llamar a un metodo a cierta hora

Nadie dijo que nadie naciera sabiendo, pero si dices que no te ayuda pues nada, mis disculpas.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 18/08/2008, 10:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Cita:
Iniciado por GreenEyed Ver Mensaje
Nadie dijo que nadie naciera sabiendo, pero si dices que no te ayuda pues nada, mis disculpas.

S!
Simplemente eso? no me puedes orientar un poco mas?
  #7 (permalink)  
Antiguo 18/08/2008, 11:47
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Llamar a un metodo a cierta hora

Cita:
Iniciado por JuaNiNNaio Ver Mensaje
Simplemente eso? no me puedes orientar un poco mas?
jajaja... ya te dio el nombre de las herramientas que puedes utilizar, solo te hace falta descargarlas y ver en la documentacion como funcionan, o si no quieres ver la documentacion buscar algun ejemplo en la red, pero por lo menos tienes que descargar las librerias.

saludos!
  #8 (permalink)  
Antiguo 18/08/2008, 13:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 19
Antigüedad: 15 años, 8 meses
Puntos: 1
De acuerdo Respuesta: Llamar a un metodo a cierta hora

Yo para esos casos uso un TimerTask, aca te mando un ejemplo que hice


private Long getIntervalMiliSeconds(int pIntervalMinutos){
long IntMiliSeconds;

IntMiliSeconds = 1000 * 60 * pIntervalMinutos;

return IntMiliSeconds;
}

private void ExecuteTimerTask(){
TimerTask timerTask = new TimerTask(){
@Override
public void run(){
try {
RenameFiles(origen);
MoveFiles(origen);
deleteFiles(origen, "ARD");
UpdateStatusLabel(MSG_FINAL_OK);
UpdateIconLabel("/images/ok.png");
}
catch(Exception ex){
System.out.print(ex);
}
}
};

Timer timer = new Timer();
long InvertalMiliSeconds = getIntervalMiliSeconds(iniIntervalMinutos);
timer.schedule(timerTask, iniDateTimeStart, InvertalMiliSeconds);
}

la variable: iniDateTimeStart, almacena a partir de que dia y hora en que se va a ejecutar siempre ....espero haberte ayudado
  #9 (permalink)  
Antiguo 19/08/2008, 02:29
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Gracias MarCopero, con tu ejemplo lo veo mas claro, investigare a ver si puedo hacerlo funcionar.

Saludos!
  #10 (permalink)  
Antiguo 19/08/2008, 05:51
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Bueno pues lo acabo de hacer con Quarz, siguiendo este tutorial http://www.teqi.org/es/Ejecucion-De-...page=0%2C1

El problema es que no me arranca la tarea, he metido la libreria jar del quarz dentro del web-inf pero nada, como si no hubiera hecho nada. ¿Alguna sugerencia?
  #11 (permalink)  
Antiguo 19/08/2008, 09:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 19
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Llamar a un metodo a cierta hora

nunca he usado el Quarz, hasta hace poco estaba en tu misma situacion de llamar a un metodo a cierta hora y desde ese momento uso TimerTask y funciona todo bien, intenta hacerlo con un timerTask a ver que tal te va.

Saludos
  #12 (permalink)  
Antiguo 19/08/2008, 11:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Cita:
Iniciado por MarCopero Ver Mensaje
nunca he usado el Quarz, hasta hace poco estaba en tu misma situacion de llamar a un metodo a cierta hora y desde ese momento uso TimerTask y funciona todo bien, intenta hacerlo con un timerTask a ver que tal te va.

Saludos
Pues mañana voy a probar con ello y comento, gracias tio!
  #13 (permalink)  
Antiguo 20/08/2008, 01:09
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Pues ya he conseguido hacerlo gracias a la ayuda de MarCopero, pero tengo un problema, he creado un metodo como el de MarCopero modificando el run con lo que necesito obviamente. Este metodo lo he creado dentro de mi clase GestorEstadisticas.java, el problema es que para que empiece a contar a este metodo hay que llamarlo, lo he llamado desde mi pagina principal y funciona, pero esto no me sirve, ya que necesito llamarlo cada 24 horas, y si entrara antes de 24 horas en principal se volveria a llamar al metodo y volveria a empezar de 0, arrancandose por primera vez cada vez que entre a principal.jsp. ¿Desde donde puedo llamarlo para que la llamada sea una unica vez y no se vuelva a llamar al metodo hasta un reinicio de tomcat?

Saludos y gracias!!
  #14 (permalink)  
Antiguo 20/08/2008, 03:45
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

He realizado la llamada desde el metodo init de mi servlet, es correcta esta forma?? parece que funciona.
  #15 (permalink)  
Antiguo 20/08/2008, 09:28
 
Fecha de Ingreso: agosto-2008
Mensajes: 19
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Llamar a un metodo a cierta hora

Cita:
Iniciado por JuaNiNNaio Ver Mensaje
Pues ya he conseguido hacerlo gracias a la ayuda de MarCopero, pero tengo un problema, he creado un metodo como el de MarCopero modificando el run con lo que necesito obviamente. Este metodo lo he creado dentro de mi clase GestorEstadisticas.java, el problema es que para que empiece a contar a este metodo hay que llamarlo, lo he llamado desde mi pagina principal y funciona, pero esto no me sirve, ya que necesito llamarlo cada 24 horas, y si entrara antes de 24 horas en principal se volveria a llamar al metodo y volveria a empezar de 0, arrancandose por primera vez cada vez que entre a principal.jsp. ¿Desde donde puedo llamarlo para que la llamada sea una unica vez y no se vuelva a llamar al metodo hasta un reinicio de tomcat?

Saludos y gracias!!
si es que estas usando el metodo:

private Long getIntervalMiliSeconds(int pIntervalMinutos){
long IntMiliSeconds;

IntMiliSeconds = 1000 * 60 * pIntervalMinutos;

return IntMiliSeconds;
}

pasale como parametro 1440 eso equivale a un dia (24hrs) pero ese metodo lo transforma a milisegundos...

y en esta parte quedaría asi:

Timer timer = new Timer();
long InvertalMiliSeconds = getIntervalMiliSeconds(1440);
timer.schedule(timerTask, iniDateTimeStart, InvertalMiliSeconds);

eso se ejecutara cada 24 horas

Saludos y que bueno que ya estes por buen camino
  #16 (permalink)  
Antiguo 20/08/2008, 09:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 19
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Llamar a un metodo a cierta hora

ah me olvidaba, yo uso un archivo .ini en el que almaceno varias valores y entre uno de ellos esta el valor que tomara la variable iniDateTimeStart

en el archivo .ini el valor que tomara esa variable es:
datetime = 20/08/2008 10:00:00

con esto le digo que a partir de esa fecha se ejecutara a las 10am ese proceso cada 24hrs
  #17 (permalink)  
Antiguo 21/08/2008, 13:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Llamar a un metodo a cierta hora

Si eso lo entiendo, pero lo que digo es de donde llamaria al metodo para que empezara a contar, lo he hecho desde el metodo init de mi servlet, pero no se si eso esta bien.
  #18 (permalink)  
Antiguo 01/06/2011, 15:46
 
Fecha de Ingreso: junio-2011
Mensajes: 10
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Llamar a un metodo a cierta hora

juaninnaio me podrias mostrar como quedo tu codigo para haer algo parecido
un saludo y gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 01:27.