Usar JConsole com JavaService

0 respostas
odoni

Srs. tenho um sistema com as seguintes caracteristicas:
Versão Java: 1.6.0_21
Empacotado como JAR
Minha Main Class extende TimerTask, ou seja, é um serviço que roda de tempos em tempos

A instalação no servidor é feita por arquivos de lote (bat) que instalam meu JAR como serviço do Windows

Esta aplicação roda perfeitamente bem, não tenho nenhum problema com a instalação dela como serviço, os logs funcionam perfeitamente e o consumo de hardware é mínimo.

No entanto, preciso monitorar esta aplicação através de JMX e JConsole. É ai que meus problemas começam: O JConsole não consegue enxergar a minha aplicação rodando.

Se eu inicio minha aplicação manualmente através do BAT, o JConsole a reconhece e eu consigo monitorá-la, mas quando ela está rodando como serviço não aparece na lista de aplicações locais do JConsole (OBS.: Estou utilizando o JCosnole do próprio servidor e não um JConsole remoto)

Coisas que eu pesquisei:

  • Dei uma olhada no código fonte do JavaService (http://javaservice.objectweb.org) e na verdade é o executável dele que é criado como serviço, e é este executável que chama minha aplicação

  • Não adianta passar o argumento -Dcom.sun.management.jmxremote para a JVM, mesmo assim o JConsole não reconhece minha aplicação (Além disso no Java 6 não é mais necessário a passagem deste argumento para que o JConsole a enxergue)

  • Tentei executar o BAT da minha aplicação via Runtime.exec(), mas teve o mesmo comportamento do serviço (Essa foi uma tentativa desesperada :oops:)

Alguém tem alguma idéia de como posso monitorar uma aplicação rodando como serviço pelo JConsole?

Obrigado

Criado 1 de dezembro de 2010
Respostas 0
Participantes 1