Preciso implementar um sistema em Java que trabalhe com monitoramento, ou seja, a cada X minutos ele fará uma pesquisa no banco de dados e, dependendo do resultado, fará ou não determinada rotina. Esse monitoramento será feito através de uma Thread, sendo que ela ficará ativa, em um loop, até uma flag informar que a mesma deverá interromper ou reiniciar o seu trabalho, saindo do loop e retornando, como se fosse um “reset” no sistema.
Minha dúvida é a seguinte: seria possível implementar um sistema desse tipo sobre o Tomcat? Se sim, seria interessante rodar sobre o mesmo? Ou o ideal é que fosse uma aplicação Java rodando em um servidor qualquer? Pergunto isso pq rodar sobre o Tomcat seria uma boa pra mim, mas não sei se eu perderia o controle sobre a(s) Thread(s) ou até mesmo, se eu teria controle sobre a aplicação através de uma interface gráfica gerenciável através da WEB.
Resumindo, o que eu realmente preciso é de uma aplicação que funcionasse igual a uma aplicação Java local com interface gráfica, porém, rodando remotamente. Se alguém tiver qualquer idéia ou outro framework para isso, agradeço imensamente pela resposta.
Preciso implementar um sistema em Java que trabalhe com monitoramento, ou seja, a cada X minutos ele fará uma pesquisa no banco de dados e, dependendo do resultado, fará ou não determinada rotina. Esse monitoramento será feito através de uma Thread, sendo que ela ficará ativa, em um loop, até uma flag informar que a mesma deverá interromper ou reiniciar o seu trabalho, saindo do loop e retornando, como se fosse um “reset” no sistema.[/quote]
Você pode rodar o agendamento a partir de um javax.servlet.ServletContextListener.
[quote=renatobach]Resumindo, o que eu realmente preciso é de uma aplicação que funcionasse igual a uma aplicação Java local com interface gráfica, porém, rodando remotamente. Se alguém tiver qualquer idéia ou outro framework para isso, agradeço imensamente pela resposta.
Obrigado.[/quote]
Acredito que uma aplicação web seja mais interessante que uma desktop.
Agradeço muito a sua resposta. Essa dica do javax.servlet.ServletContextListener realmente era o que eu estava procurando. Vou trabalhar com ela e qualquer dúvida posterior volto a postar aqui. Muito obrigado mesmo.
Bom, as dicas do evandro.santos foram perfeitas para mim, tudo funcionou exatamente da maneira que eu queria
Agora minha dúvida é outra: supondo que eu tenha implementado uma classe que extenda TimerTask, e durante a execução do método run da mesma, eu configuro determinados valores para alguns atributos da classe. Por exemplo: se uma das funções da classe é acessar o banco de dados, eu gostaria de “setar” o valor do atributo “date” para o último acesso feito ao banco.
Pergunta: como que eu posso verificar esse valor acessando minha aplicação via web? Por exemplo, acessando http://www.minhaaplicacao.com.br eu teria acesso a um painel de controle onde poderia verificar essa informações. Minha dúvida não é como construir o painel, e sim, como me comunicar com a classe, já que ela está sendo inicializada por um listener. Eu sei que posso gerar logs para obter essas informações, mas eu gostaria de ter um painel de controle para isso.