Verificar se o servidor de aplicação está ligado

Galera, estou com um probleminha no lugar que trabalho.
Usamos o JBoss e construímos uma tela pra gerenciar o banco, o pool de conexões, ligar o servidor e coisas do tipo… Por alguma razão, após muitos testes, cheguei a conclusão de que não posso colocar um outro jar junto com o run.jar, do JBoss. Alguém sabe me dizer o porque disso? Se eu colocar qualquer outro jar dentro do classpath no manifest, dá pau (na hora de startar o servidor dá uma exception de falta de libs - o que não acontece se eu tirar os jars - não, não é problema com esses outros jars, mas sim quando junto tudo). Alguém já viu isso?

Bom, de qualquer forma, não é esse a verdadeira questão do tópico. Existe alguma maneira de verificar se um servidor está online SEM fazer lookup? Eu ando pensando em pingar o localhost, mas acho isso uma ideia muito nada a ver. Tem um método dentro da Main que fica no run.jar do JBoss chamada isStarted, mas se eu ligar outro JBoss, ele inicia normalmente e dá erro de múltiplos JBoss na mesma máquina - o que é o que deve acontecer, mas eu sempre verifico se existe uma instância do JBoss rodando com o método isStarted (ele retorna false quando tento instanciar um novo JBoss). Enfim… gostaria de ouvir as alternativas de outros desenvolvedores =)

Já sei da existência do twiddle, mas não sei se poderei usá-lo (pelo problema estranho que existe ao juntar o run.jar do JBoss com outros no mesmo classpath do Manifest).

André não sou muito expert nisso mas se você estiver no linux você não poderia fazer um grep procurando um determinado processo?

Abs

Exatamente, eu posso fazer isso… Só que não funciona. Por diversas razões… Uma delas é a de que eu quero manter uma ‘padronização’ entre os Sistemas Operacionais. Outra é a de que possivelmente, depois de startar o servidor, o processo do jboss vai ficar como java (possivelmente eu digo no Linux, porque no windows ele fica como java mesmo). E se eu derrubar esse processo, eu derrubo a aplicação que controlaria o servidor.

Até não é nem tanto por derrubar o processo e nem por manter a padronização entre SOs… Quando eu derrubo o servidor, a aplicação que controla ele também cai. Isso porque existe, provavelmente, um System.exit(0) dentro do shutdown do JBoss (do método shutdown que se encontra na Main do run.jar). O que eu queria mesmo é fazer com que ele instancie somente 1 aplicação por JVM, e não várias onde cada uma delas diz que o JBoss está fora do ar, enquanto que ele está ligado.

Certo te entendi… uma saida que me vem em mente agora é fazer um simples telnet na porta do jboss.

Telnet existe tanto pra linux como pro sistema do tio bil. Algo tipo telnet ip_server:8080 se retornar erro do telnet é porque ele ta fora.

[quote=maiconramones]Certo te entendi… uma saida que me vem em mente agora é fazer um simples telnet na porta do jboss.

Telnet existe tanto pra linux como pro sistema do tio bil. Algo tipo telnet ip_server:8080 se retornar erro do telnet é porque ele ta fora.
[/quote]

Herere, tenho uma gambi, mais ou menos asssim, e ateh hoje ainda não explodiu não.

Hehehe. É uma boa alternativa essa… Quando me sobrar um tempinho, vou implementar e posso até colocar o resultado em um repositório.

Mas e isso de não poder ter mais de 1 jar dentro do classpath do Manifest do jar… É muito estranho… Posso ter pouco tempo de programação séria, mas nunca vi algo do tipo.

Abraço galera! Valeu!

Muito tempo atrás eu tive que fazer algo parecido… mas tive que fazer usando JNI*… e com Tomcat…

Na época lembro que usei APIs do Windows referentes a administração remota… mas para isso era necessária a “senha de administrador da rede”(que serve para entrar em qualquer computador da rede)… ou senha de administrador da máquina alvo…

Assim com esse acesso remoto era possível iniciar ou parar alguma aplicação que estivesse registrada como um serviço… mas acho que o JBoss deve ter alguma forma nativa de fazer isso… ou não… :lol: :lol: :lol:

*Se não me engano eram APIs referentes ao Service Control Manager(SCM)… e fiz com C++…