프로세스 및 스레드와 관련된 문제가 있습니다. 내 시나리오는 다음과 같습니다공유 프로세스/스레드
- : 이후
Thread startGXThread = new Thread(new Runnable() { @Override public void run() { try { ... File gxExe = new File(pathToGX); // Path to Diagnosis.exe gxp = pb.start(); gxp.waitFor(); } catch (IOException e) { LOG.error("Can't start module"); LOG.error(e.getMessage(), e); } catch (InterruptedException e) { LOG.debug("thread interrupted. Destroy process"); LOG.debug(e.getMessage(), e); if (gxp != null) { gxp.destroy(); LOG.debug("process exit value: " + gxp.exitValue()); } } } }, "diag_thrd");
부두 webserver (ServiceWebApp)는 webapp로 시작됩니다.
- 크롬을 시작하고 'Starter-App'은 닫힐 때들을 수 있습니다.
크롬이 '시작 - 앱'을 닫으면 부두가 중지되고 시작 앱인 .Diagnosis.exe가 종료됩니다. 이것은에 의해 수행됩니다
Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { stopAsync(); } }); public static void stopAsync() { Thread diag = getThread("diag_thrd"); if (diag != null) { diag.interrupt(); } if (gxp != null) { gxp.destroy(); LOG.debug("process exit value: " + gxp.exitValue()); } }
내 자바 응용 프로그램, '스타터 - 앱'을 호출합니다 Thread
라는 이름의 내 ProcessBuilder
와 다른 EXE 응용 프로그램 (Diagnosis.exe)을 시작
질문 : 난 아직도/종료 진단을 파괴 할 수있는 동안, 웹 애플리케이션 내에서 startet Diagnosis.exe을 중지했다가 다시 시작 할 수 있어야 . '초보자 용 앱'에서 크롬이 멈 추면 exe가 실행됩니다. 내 문제를 설명하고 제안을 바랍니다.
그래서 Starter-App은 부두 서킷 및 Chromium 인 Diagnosis.exe를 시작합니다. – Sonata
맞습니다. 'Starter-App'은 Diagnosis.exe, Jetty (배포 된 웹 응용 프로그램 포함) 및 Chromium (웹 응용 프로그램에 대한 URL 포함)을 시작합니다. Chromium이 종료되면 (사용자가) 'Starter-App'은이를 인식하고 부두 및 Diagnosis.exe를 종료합니다. – kism3t