Fala galera,
Tenho um aplicativo java que tem algumas rotinas que são disparadas de tempos em tempos.
Algumas rotinas são de 5 em 5 minutos, outras uma vez por dia.
Mas tenho duas que são apenas 1 vez por mês, uma seria no dia 1 de cada mês e a outra no dia 2 de cada mês.
Esse é meu código para disparar uma delas.
long periodo = 86400*1000;
Calendar vFull = Calendar.getInstance();
vFull.set(Calendar.DAY_OF_MONTH, 2);
vFull.set(Calendar.HOUR_OF_DAY, 5);
vFull.set(Calendar.MINUTE, 0);
vFull.set(Calendar.SECOND, 0);
Date timeVFull = vFull.getTime();
Timer timerVFull = new Timer();
timerVFull.schedule(new VRoutineFull(), timeVFull, periodo);
Aqui uso um periodo de 24 horas para disparar novamente o timer, uso essa variável para todas as outras rotinas, para estanciar apenas uma.
Usando o Calendar coloco o dia do mês, porque só quero que rode dia 2 as 5 da amanhã.
Mas essa rotina roda todo santo dia, inclusive em horas alternadas, hoje por exemplo rodou ás 11:00.
Qual o problema desse timer?
já usei também o método scheduleAtFixedRate e deu na mesma.
Pensei em em fazer uma variável periodo de 1 mês, mas imaginem que meu servidor cai no dia 15, se começar a contar do dia 15 essa rotina vai rodar sempre dia 15, isso é estranho.
O que estou fazendo de errado?
[]'s