Olá a todos,
Estou implementando um TimedObject, no metodo ejbTimeout recebo com parametro um Timer preciso verificar se este Timer esta com status de cancelado ou não para que não ocorra erro na minha aplicação mas não achei nenhum metodo para verificar isso…
Quando tento acessar um timer para ver qual será a proxima execução ele da uma NoSuchObjectException.
public void agendamento(){
Collection<Object> timers = timerService.getTimers();
//esse for cancelça todas as tarefas agendadas
for (Object object : timers) {
Timer timer = (Timer) object;
timer.cancel();
}
long primeiraExecucao = 1000 * 60 * 1; //1 minuto
long execucaoSubsequente = (1000 * 60 * 60 * 23) + (1000 * 60 * 59); // 23:59 minuto;
timerService.createTimer(primeiraExecucao, execucaoSubsequente, null);
}
quando o tempo colocado no timerService for estourado ele executara o metodo com a anotação
@Timeout
public void quemVaiExecutarTarefas(Timer timer){
//Aqui Executa a tareda quando é expirado o tempo do timmer
System.out.println("EXECUTOU O TEMPORIZADOR DA NOTIFICAÇÃO");
executarDAO.apagarTodosInativos();
}
Cara valeu pela ajuda, mas isso tudo ja tenho implementado e ja esta funcionando.
O problema é o seguinte quando eu paro o servidor e efetuo o start novamente eu mando cancelar todos os timers assim como você disse.
So que o servido em algum momento tenta acessar o timer que acabei de cancelar, com isso acontece o erro que te falei
o que eu quero saber é quando recebo um timer no meu metodo com a anotação @Timeout como posso verificar seu status se ele esta canceled ou in-timeout.