Thread para disparar email de notificação

Olá a todos. Trabalho numa empresa e desenvolvo um sistema web de Service Desk. Os chamados abertos nesse sistema tem um chamado SLA que é o tempo para se revolver um chamado(Problema, Indicente, etc) Quem entende de ITL sabe do que estou falando. Meu lema é: Tenho que implementar uma thread para disparar ao gerente quando as SLA estão expirando. Penso em fazer esse serviço fora da aplicação mas rodando no mesmo container ou em fazer junto com a aplicação. Se for feita junto, só entrará em funcionamento, lógico, levantando a aplicação. Fora, temos a vantagem dela sempre estar rodando, independente da aplicação. Qual a solução que vocês acham melhor? Qual a dica pra startar uma thread quando se levanta a aplicação web?

Você pode usar um ContextListener, ou até mesmo passar por ServletContext.
Agora, porque uma thread?

Imagino uma Thread prq ela vai ficar chegando de tempos em tempos se a SLA já está vencendo pra notificar ao Gerente do Service Desk quais chamados estao entrando em estado critico entende?

Não, não entendo, mais também não sei como funciona a sua aplicação.
Mais, com certeza a sua aplicação é WEB, correto? Se for, não tem como fazer isso, é o cliente que tem que ficar mandando requisição para o servidor, não tem como o servidor mandar uma requisição pro cliente, pelo menos, não na spec 2.5.
Pra fazer isso daih, só na spec 3.0, que possui o Servlet Assincrono.

Desculpa, mas vc não entendeu. Vou explicar de novo pra ver se vc pode me ajudar com alguma idéia:
Quero uma aplicação pra ficar de tempos em tempos, consultando no banco, se numa lista de chamados, alguns já estão expirando o tempo de resoluação;
Caso encontre alguns vencendo, mande um mail (Através de um serviço que eu já implementei) para o gerente, ou para o responsável pelo chamado.
Seria uma Thread dormindo de tempos em tempos e buscando no BD a lista de chamados com o tempo expirando. Simples.
Não mando nada pra o cliente. Mando um mail através de um serviço, mas isso tem que ser checado de tempos em tempos, portanto, tem que ser uma Thread num loop infinito, rodando no servidor. Espero que tenha entendido e possa me ajudar.

Timer Service: http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html

Obrigado. Solucionei de uma outra forma. Pelo que esmiralha me passou: [quote]Timer Service: http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html[/quote] vi que é em EJB, porem estou usando spring. Fiz um componente a parte e foi até melhor, pois, tem uma interface para configurar as threads e startar ou parar. Outra vantagem nisso é que fica a parte da aplicação nao comprometendo a permance da mesma e facilitando a manutenção e posso parar o serviço quando quiser… Obrigado.

Se você usa Spring, ele possui algumas formas padronizadas para scheduling de jobs que não envolvem gerenciamento manual de threads.

O Spring 3 tem uma abstração chamada TaskScheduler que talvez valha a pena você conhecer.

[quote]Se você usa Spring, ele possui algumas formas padronizadas para scheduling de jobs que não envolvem gerenciamento manual de threads.

O Spring 3 tem uma abstração chamada TaskScheduler que talvez valha a pena você conhecer.[/quote]

Valeu a dica. Vou dar uma olhada e escolher a solucação melhor. Obrigado cara.