Executar tarefa de hora em hora

5 respostas
A

Olá pessoal,

dei uma pesquisada sobre Threads, Quartz e etc…
mas não achei uma solução e muito menos intendi como funcionaria isso dentro de uma aplicação JSP.

tenho um site em JSP, com alguns sistemas basicos de login, usuarios e etc…
gostaria de criar um sistema que modificasse alguns valores no MySQL de hora em hora.

Do jeito que fiz, ele estaria ativando uma Thread esperando 3600 segundos, e executando a função novamente, mas com isso a pagina .JSP precisa ficar aberta o tempo todo.

Alguem me da uma luz de como devo fazer para a função ser executada sem uma pagina JSP ser aberta?
Algo que o proprio servidor execute tal metodo em determinada hora? (1:00, 2:00, 3:00 etc…)

Obrigado.

5 Respostas

G

Uma vez precisei fazer a programação de algumas ações no servidor, eu utilizei o Quartz e funcionou bem, ele tem bastante opção de configuração. Eu obtive informação sobre ele na revista Mundo Java (número 19), la tem um artigo bem interessante.

M

Em cima do Tomcat não vai funcionar mesmo. Terás que fazer um programa em separado que rode de tempos em tempos,senão, vai ter que ficar a servlet rodando a vida inteira.
Ou podes fazer um programa e trabalhar em junto ao cron, se estiveres no linux.

Até!

B

eu faria uma aplicação separada… sem ser para web (desktop mesmo)… com threads… que fizesse as atualizações desejadas no banco…
Mas não sei se essa é a melhor solução…

P

Recentemente precisei de algo parecido e resolvi com TimerTask:

http://www.guj.com.br/posts/list/79706.java

A

ouvi falar do TimerTask…
e tb vi outro topico dizendo q o Quartz seria um canhão para matar uma mosca heheh

quero algo bem simples…
hora em hora… adiciona valores no BD… rapido e facil…

esse TimerTask funciona bem?

import java.util.Timer;
import java.util.TimerTask;

public class MyTimer {
	public static final long TEMPO = (1000 * 60); // atualiza o site a cada 1 minuto

	public static void main(String[] args) {
		System.out.println("inicio");
		Timer timer = null;
		if (timer == null) {
			timer = new Timer();
			TimerTask tarefa = new TimerTask() {
				public void run() {
					try {
						System.out.println("Teste agendador");
						//chamar metodo
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			};
			timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
		}
	}
}

nunca tentei faz um aplicativo DESKTOP… soh WEB mesmo
se for essa a solução…
alguem poderia me dizer onde tem um tutorial para fazer uma “interface” bem basica, apenas me mostrando quando as atualizações no meu BD vai acontecer ?
(Swing ?)

Criado 20 de janeiro de 2008
Ultima resposta 21 de jan. de 2008
Respostas 5
Participantes 5