[quote=Rafaelprp]Pode usar o TimerService da especificação EJB tb.
[]'s[/quote]
Eu tentei usar o TimerService, mas não gostei muito.
A primeira coisa que me desagradou é que ele precisa ser iniciado programaticamente.
Daí o que eu fiz foi assinar um método como @PostConstruct e colocar
o start do TimerService lá. Mas daí surge outro problema, que é que o Bean precisa ser instanciado para o @PostConstruct ser chamado, daí
precisei dar um jeito de chamar esse bean uma vez (várias soluções de contorno já).
Porem, o método createTimer() só pode ser chamado uma vez, e como posso ter várias instâncias do meu Bean, usando @PostCosntruct dava errado. Dai a solução que estah ateh no livro “Enterpise Java Beans 3” foi criar um atributo estatico para controlar a criação do createTimer. Mas dai, duas JVMs dá pau de novo, por causa dos estaticos (mais soluções de contorno)
E pra completar, o timerService é persistente. Se o servidor parar e voltar, ele ainda estará lah, ou seja, essa solução de cima mesmo com apenas 1 jvm quebra ai, pois o atributo estatico será reiniciado, dai vai achar que não tem nenhum timerService e vai criar outro, dai pau!! A solução seria cancelar todos os timerServices antes de iniciar um novo, mas dai, eu cansei desse negócio de TimerService e soluções de contorno e desencanei.
No próprio livro "Enterprise Java Beans 3 o autor fala que o timerService é muito ruim. Que seria tão simples se os caras simplesmente tivessem se baseado no cron…mas não…
Acho que vou partir pro Quartz mesmo, porem vou ter que fazer mexidas que não gostaria as vesperas de ir pra produção. Seria tão simples se o Jboss Scheculer tivesse uma tag false.
Obrigado a todos pelas respostas!! E se alguem tiver mais dicas, por favor!! 