Olá…
Fiz uma classe que extende TimerTask. Esta classe deve ser executada com um intervalo
de 24h a partir de um data determinada pelo usuario.
O agendamento eu faço utilizando ServletContextListener.
O problema é que assim que o método listener entra em ação a classe é executada também.
O desejado é que a tarefa seja executada utilizando o intervalo a partir da data selecionada.
public class AtualizaMoedasListener implements ServletContextListener {
private final long humHora = 1000 * 60 * 60;
//private final long tempo = 1000 * 20;
public void contextDestroyed(ServletContextEvent event) {}
public void contextInitialized(ServletContextEvent event) {
Timer timer = new Timer();
String horaInicio = null;
long intervalo = 0;
String intervaloOperacao = null;
Properties properties = new Properties();
InputStream fis = getClass().getClassLoader().getResourceAsStream("sic.properties");
try {
properties.load(fis);
fis.close();
horaInicio = properties.getProperty("horaInicioOperacaoDownloadMoedas");
intervaloOperacao = properties.getProperty("intervaloHorasOperacaoDownloadMoedas");
int hora = Integer.parseInt(horaInicio.substring(0, 2));
int minuto = Integer.parseInt(horaInicio.substring(3));
intervalo = humHora * Integer.parseInt(intervaloOperacao);
GregorianCalendar calendar = new GregorianCalendar();
calendar.set(GregorianCalendar.HOUR, GregorianCalendar.HOUR_OF_DAY);
calendar.set(GregorianCalendar.SECOND, 0);
calendar.set(GregorianCalendar.HOUR_OF_DAY, hora);
calendar.set(GregorianCalendar.MINUTE, minuto);
timer.scheduleAtFixedRate(new AtualizaMoedas(), calendar.getTime(), intervalo);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Então dando um exemplo: Eu configurei que a data de início seria às 08:00.
Então a execução da tarefa (AtualizaMoedas()) deveria ser realizada somente as 08:00 do dia seguinte.
O que acontece atualmente é a execução seguindo este padrão mas também ocorre a execução da tarefa
assim que o TomCat entra no ar.
Como configurar corretamente o agendamento e impedir a execução da classe AtualizaMoedas no
start do TomCat?
Valeu!!!