Ich habe eine Java-Anwendung als Windows-Dienst mit Procrun ausgeführt (speziell prunsrv). Der Dienst ist als exe StartMode definiert, daher wird eine Batchdatei (run-my-app.bat) als StartImage ausgeführt. Warum ich nicht jvm oder java benutze, ist eine andere Geschichte, die nicht mit diesem Problem zusammenhängt (ich konnte keine Spring-Boot-Anwendung mit procrun ausführen, alle Beispiele funktionierten nicht, so dass ich eine Stapeldatei erstellte und java -jar my aufruft .Krug). prunsrv.exe wird tatsächlich entsprechend der Anwendung umbenannt, sagen Sie myapp.exe. Das Problem ist, dass, wenn myapp.exe über den Task-Manager beendet wird, der Java-Prozess bleibt! Die Batchdatei-my-app.bat läuft die Anwendung mit der folgenden Zeile:Prunsrv exe über Task-Manager getötet, aber Child-Prozess bleibt
start "%APP_NAME%" /b "%JAVA_EXE%" -jar myapp.jar --spring.config.location=application.properties --logging.config=log4j2.xml
Die Batch-Datei abgeschlossen ist und der gestartete Java-Prozess bleibt - das weiß ich, denn wenn ich eine Nachricht nach der oben drucken „Start "Befehl Ich sehe die Nachricht im Protokoll.
Gibt es eine Möglichkeit, den Java-Prozess zu stoppen, wenn die Datei prunsrv.exe (umbenannt myapp.exe) getötet wird?