Pergunta

Eu estou procurando uma biblioteca que permita-me a olhar para cima o status de um serviço do Windows para verificar se o serviço é iniciado e em execução. Olhei para a biblioteca Sigar, mas é GPL e por isso eu não posso usá-lo. A BSD licença (ish) Commercial ou a obrigação de como isso vai ser empacotado em software comercial.

Foi útil?

Solução

Se nada mais ajuda, tente pensar em uma abordagem ligeiramente diferente (se você pode, é claro), por exemplo:.

  • Há uma abundância de software livre / não-livre que não monitoramento, incluindo serviço de janelas de monitoramento (por exemplo nagios, Zabbix, etc.). Estes monitores têm tipicamente API aberta, onde seu aplicativo Java pode integrar-se em um número de maneiras diferentes.
  • Se você tem o controle sobre dependendo do aplicativo de serviço, expor outra, maneira diferente para a sua aplicação Java para verificar (por exemplo, executar um ouvinte manequim em uma porta, crie um arquivo, etc.). serviços do Windows não são uma coisa multi-plataforma, portanto, não é algo que seria de esperar para ser suportado em breve.

Outras dicas

Eu não acho que há alguma maneira pura em Java para fazer isso porque alguns sistemas operacionais não têm a noção de "serviços" como o Windows faz. Em nossos projetos, nós escrevemos um invólucro em torno chamadas para o comando "sc" na linha de comando. Para obter o status de um serviço, você pode fazer:

sc \\ alguns por computador consulta "meu nome serviço"

Você vai ter que analisar manualmente a saída, mas é bastante simples.

Eu não sei de quaisquer bibliotecas, mas dependendo de como detalhado você precisa para começar você pode obter com alguns comandos shell e analisando a saída.

NET START servicename

será ou iniciar o serviço, ou dar-lhe de volta uma mensagem de erro que lhe diz a sua já começou. Eu não sei de qualquer comando que irá apenas dar-lhe o status embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top