Seguinte,
Alguém conhece ou já implementou algum algoritmo que verifica se uma aplicação j2ee usando Tomcat esteve fora do ar, caso estiver registra no banco de dados a hora e aplicação? eu sei que existe o http://www.lambdaprobe.org/ , e eu uso ele, porem a utilidade dele é para outra necessidade de monitoramento.
Se eu entendi bem, uma implementação da interface ServletContextListener resolve…
public class ListenerTest implements ServletContextListener {
public void contextDestroyed(ServletContextEvent event) {
//faz algo pq a aplicação vai, ou saiu do ar...
}
public void contextInitialized(ServletContextEvent event) {
}
}
[quote=kornkorn]Entendi… porem so ficou uma dúvida, quando essa servleta será acionada? pois eu preciso de controlar isso automaticamente.
Grato [/quote]
Não é uma classe servlet cara. É um listener! E vai se acionada automaticamente pelo container quando a aplicação iniciar ( executa método contextInitialized) ou cair (executa método contextDestroyed).
Agora, se o container cair, não sei qual seria o comportamento, só testando pra ter certeza…
Correto é uma listener , mas na queda de energia cairá tudo.
O que o pessoal tem feito, não sei se estamos respondendo o foco da pergunta deste tópico mas é assim:
1.Colocar o servidor que não pode cair em um nobreak ligado a rede com o sistema em funcionamento
Coloca-se um computador ( 486, pentium 100) mais fraco , fora do nobreak e ligado na rede
O servidor que está no nobreak fica perguntado se o computador que nao está no nobreak está no ar.
caso não esteja , enviar um email para os administradores, grava log , e etc…
caso durante um periodo de perguntas de 5 minutos ao servidor que nao está nao está no nobreak
nao respondeu desliga stop nos sistemas , stop do servidor.
Eu implementei essa solução, e deu certo, eu tinha problema de queda de energia de madrugada e nao tinha ninguem para verificar o problema , fora o risco de danificar o servidor numa queda brusca , ou volta de energia com muita carga.
Bom no meu caso resolveu, nao sei se é o foco da pergunta, mas deixo um solução que funciona.
Olha só como estou pensando em montar a arquitetura de comunicação.
Contéudo do algoritmo:
| pinga o servidor se for ok, então sai fora.
| senão, salva no banco de dados a data_hora, host.
| será gerado um TesteAplicacao.jar
Usando o TesteAplicacao.jar
Servidor Linux no crontab um script shell executando o TesteAplicacao.jar de 1 em 1 min.