2017-12-26 17 views
0

Java 응용 프로그램을 procrun (특히 prunsrv)을 사용하여 Windows 서비스로 실행했습니다. 이 서비스는 exe StartMode로 정의되어 배치 파일 (run-my-app.bat)이 StartImage로 실행됩니다. 내가 jvm 또는 java 모드를 사용하지 않는 이유는이 이야기와 관련이없는 다른 이야기입니다. (procrun으로 스프링 부팅 응용 프로그램을 실행할 수 없었습니다. 모든 예제가 작동하지 않아서 배치 파일을 작성하고 java -jar my .항아리). prunsrv.exe는 실제로 myapp.exe와 같이 응용 프로그램에 따라 이름이 바뀝니다. 문제는 myapp.exe가 작업 관리자를 통해 종료되면 java 프로세스가 남아 있다는 것입니다. 배치 파일 실행 - 내 - app.bat 다음 줄 사용하여 응용 프로그램 실행 :Prunsrv exe가 작업 관리자를 통해 종료되었지만 하위 프로세스가 남아 있음

start "%APP_NAME%" /b "%JAVA_EXE%" -jar myapp.jar --spring.config.location=application.properties --logging.config=log4j2.xml 

배치 파일이 완료되고 시작 Java 프로세스가 남아있다 - 내가 위의 후 메시지를 출력하기 때문에 경우이 알고 "시작 "명령을 실행하면 로그에 메시지가 표시됩니다.

prunsrv.exe (myapp.exe라는 이름이 변경됨)가 종료되면 Java 프로세스를 중지 할 수있는 방법이 있습니까?

답변

0

자식 프로세스는 Job objects으로 생성 된 경우에만 닫힙니다.

IMHO prunsrv.exe에 작업을 프로세스로 시작한다고 말할 수 없으므로 질문에 대한 대답은 아니요입니다.

물론 모든 개별 프로세스를 개별적으로 종료 할 수 있습니다. 거기에 are attempts 프로세스 트리를 죽일 수 있지만 Windows 부모 - 자식 관계를 유지하지 않는 것을 알고 있어야합니다. 즉, 3 개의 프로세스 체인에서 중간 프로세스가 종료되면 트리를 더 이상 사용할 수 없습니다.