Domanda

Sto cercando una libreria che mi permetta di cercare lo stato di un servizio Windows per verificare che il servizio sia avviato e in esecuzione. Ho guardato nella libreria Sigar, ma è GPL e quindi non posso usarlo. È necessaria una licenza commerciale o BSD (ish) in quanto sarà inclusa in un software commerciale.

È stato utile?

Soluzione

Se nient'altro aiuta, prova a pensare a un approccio leggermente diverso (se puoi, ovviamente), ad es .:

  • Esiste un sacco di software libero / non libero che esegue il monitoraggio, incluso il monitoraggio del servizio Windows (ad esempio nagios, Zabbix, ecc.). Questi monitor in genere hanno API aperte in cui la tua app Java potrebbe integrarsi in diversi modi.
  • Se si ha il controllo sull'applicazione del servizio dipendente, esporre un altro modo diverso per verificare l'applicazione Java (ad es. eseguire un listener fittizio su una porta, creare un file, ecc.). I servizi di Windows non sono una cosa multipiattaforma, quindi non è qualcosa che ti aspetteresti di essere supportato presto.

Altri suggerimenti

Non credo che ci sia un modo puramente Java per farlo perché alcuni sistemi operativi non hanno la nozione di "servizi". come fa Windows. Nei nostri progetti, abbiamo scritto un wrapper per le chiamate a " sc " comando dalla riga di comando. Per ottenere lo stato di un servizio, puoi fare:

  

sc \\ query su un computer " il mio nome di servizio "

Dovrai analizzare manualmente l'output ma è piuttosto semplice.

Non conosco nessuna libreria, ma a seconda di quanto sia necessario ottenere dettagliatamente potresti cavartela con alcuni comandi della shell e analizzare l'output.

NET START nome servizio

avvierà il servizio o ti restituirà un messaggio di errore che ti dice che è già stato avviato. Non conosco alcun comando che ti darà solo lo stato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top