У меня возникла проблема с процессом и потоками. Мой Сценарий:Share Process/Thread
Мои приложения Java, называют его 'Стартер-App', начинается другой ехе приложения (Diagnosis.exe) с
ProcessBuilder
в имениThread
: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.
- start chromium и «Starter-App» слушать, когда он закрыт.
Как только хром закрывает «Стартер-приложение», это распознает и останавливает причал, а также прекращает приложение startet.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()); } }
Вопрос: мне нужно, чтобы быть в состоянии остановить Diagnosis.exe от запущен при в веб-приложение и запустить его снова, в то время как все еще быть в состоянии уничтожить/выключение диагнозе. exe, когда хром останавливается внутри «Starter-App». Надеюсь, я мог бы объяснить свою проблему и надеяться на предложения.
Итак, Starter-App запускает Diagnosis.exe, причал и Chromium? – Sonata
Правильно. «Стартер-приложение» запускает Diagnosis.exe, Jetty (с развернутым webapp) и Chromium (с URL-адресом для webapp). Когда Chromium закрывается (пользователем), «Starter-App» распознает это и выключает причал и Diagnosis.exe. – kism3t