Ich bin auf der Suche nach einer Bibliothek, mit der ich den Status eines Windows-Dienstes nachsehen kann, um zu überprüfen, ob der Dienst gestartet und ausgeführt wird. Ich habe in die Sigar-Bibliothek geschaut, aber es ist GPL und kann daher nicht verwendet werden. Eine kommerzielle oder BSD (ish) Lizenz ist erforderlich, da diese in kommerzieller Software gebündelt wird.Gibt es eine Möglichkeit, in Java den Status eines Windows-Dienstes zu überprüfen?
Antwort
Wenn nichts anderes hilft, versuchen Sie einen etwas anderen Ansatz zu denken (wenn Sie können, natürlich), zB:
- Es gibt eine viel freie/nicht-freie Software, die Überwachung der Fall ist, einschließlich Windows-Dienstüberwachung (z. B. Nagios, Zabbix usw.). Diese Monitore verfügen normalerweise über eine offene API, in die sich Ihre Java-App auf verschiedene Arten integrieren lässt.
- Wenn Sie die Kontrolle über die jeweilige Dienstanwendung haben, legen Sie eine andere, andere Möglichkeit für Ihre Java-Anwendung fest (z. B. Ausführen eines Dummy-Listeners an einem Port, Erstellen einer Datei usw.). Windows-Dienste sind keine plattformübergreifende Sache, daher ist nicht zu erwarten, dass sie in absehbarer Zeit unterstützt werden.
Ich kenne keine Bibliotheken, aber abhängig davon, wie detailliert Sie erhalten müssen, kommen Sie mit einigen Shell-Befehlen aus und parsen die Ausgabe.
NET START service
entweder den Dienst starten, oder Sie wieder eine Fehlermeldung, die Sie seine sagt bereits begonnen. Ich kenne keinen Befehl, der Ihnen nur den Status geben wird.
Ich glaube nicht, dass es irgendeine pure-Java-Möglichkeit gibt, dies zu tun, weil einige Betriebssysteme nicht den Begriff "Dienste" wie Windows haben. In unseren Projekten haben wir einen Wrapper für Aufrufe des Befehls "sc" von der Befehlszeile geschrieben. Um den Status eines Dienstes zu erhalten, können Sie tun:
sc \\ some-Computer Abfrage „mein Dienstnamen“
Sie müssen manuell die Ausgabe analysieren, aber es ist ziemlich einfach.
Ich denke, dies ist der beste Weg, um den Status des Dienstes zu überprüfen.
import java.util.*;
import java.sql.*;
import java.io.*;
import java.text.*;
public class doscmd
{
public static void main(String args[])
{
try
{
Process p=Runtime.getRuntime().exec("sc query browser"); //sc query is commond and browser is the name of service
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
if(line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("1"))
System.out.println("Stopped");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("2"))
System.out.println("Startting....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("3"))
System.out.println("Stopping....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("4"))
System.out.println("Running");
}
line=reader.readLine();
}
}
catch(IOException e1) { }
}
}
- 1. Gibt es eine Möglichkeit, den Flugmodusstatus automatisch zu überprüfen?
- 2. Gibt es eine Möglichkeit, den Pufferspeicher zu überprüfen?
- 3. Gibt es eine Möglichkeit, den Checkbox-Status von .html()
- 4. Gibt es eine bessere Möglichkeit, den Status von SearchView wiederherzustellen?
- 5. Gibt es eine Möglichkeit, den Typ eines Mountpoints zu bestimmen?
- 6. Gibt es eine Möglichkeit, den Fortschrittswert eines Fensters zu erhalten?
- 7. Gibt es eine Möglichkeit, den Inhalt eines Symlinks zu sehen?
- 8. Gibt es eine Möglichkeit, den Besitzer eines JDialogs zu ändern?
- 9. Gibt es eine Möglichkeit, 3G-Verbindung unter Linux zu überprüfen?
- 10. Gibt es in Atlassian Bamboo eine Möglichkeit, den neuesten Build-Status als Bild zu erhalten?
- 11. Gibt es eine Möglichkeit, den Namen eines Arrays in Java zu erhalten?
- 12. Gibt es eine Möglichkeit, den Typ eines generischen Template-Parameters in Java zu finden?
- 13. API Manager 1.10 - Gibt es eine Möglichkeit, den Back-End-Status zu überwachen?
- 14. Gibt es eine gute Möglichkeit, Rückgabetypen beim Refactoring zu überprüfen?
- 15. Gibt es eine kürzere Möglichkeit, alle Videoformate zu überprüfen?
- 16. Gibt es eine andere Möglichkeit, Repaint() in Java zu tun?
- 17. Gibt es eine Möglichkeit, Maschineneigenschaften ohne Vagabund zu überprüfen?
- 18. Gibt es eine Möglichkeit, die Ausführung eines Prozesses zu verzögern?
- 19. Gibt es eine Möglichkeit, den git-Status auf 2 Fernbedienungen zeigen zu lassen?
- 20. Gibt es eine Möglichkeit, den Rückgabetyp Arrays.asList zu zwingen
- 21. Gibt es eine Möglichkeit, algebraische Typen in Java zu implementieren?
- 22. Gibt es eine Möglichkeit, zu verhindern, dass fastclick beim Scrollen den Status "active" auslöst?
- 23. Gibt es eine Möglichkeit, den Verbindungsstatus zu IBM WorkLight Server zu überprüfen?
- 24. Gibt es eine Möglichkeit, die Hintergrundfarbe eines Terminals zu bestimmen?
- 25. Gibt es eine Möglichkeit, im Eclipse-Debugger benachrichtigt zu werden, wenn sich der Status eines Java-Objekts ändert?
- 26. Java - einfache Möglichkeit, die Struktur eines serialisierten Objekts zu überprüfen?
- 27. Gibt es im Eclipse Debugger (für Java) eine Möglichkeit, willkürliche Werte zu überprüfen?
- 28. Gibt es eine Möglichkeit zu überprüfen, ob es symbolische Links gibt, die auf ein Verzeichnis verweisen?
- 29. Gibt es eine Möglichkeit, Selektoren zu gruppieren?
- 30. Gibt es eine Möglichkeit, alle Attribute eines DOMEelements zu erhalten?
gute einfache Möglichkeit, dies in Java zu tun –