У меня есть служба Windows на Windows Server 2008 R2, которую я настроил с помощью instsrv
на srvany.exe
исполняемый файл. Три значения в Parameters
ключа устанавливаются следующим образом:
AppDirectory C:\selenium-grid
Application C:\ant\bin\ant.bat
AppParameters launch-hub
Служба запускается нормально, и при ее запуске в диспетчере задач появляются два процесса Java (один процесс - это муравей, а другой - класс Java, запущенный муравьем). Когда я останавливаю службу, состояние службы меняется на "Остановлено", но два процесса Java не исчезают.
Как мне остановить процессы, когда я остановлю службу?
К счастью, SRVANY - отстой. Есть альтернатива - «Менеджер службы без присасывания» (NSSM) - он завершит работу вашего приложения и всех дочерних процессов по сигналу остановки службы.
К сожалению, srvany.exe не предоставляет никакого метода для уничтожения процесса (ов), когда служба остановлена, поэтому в основном ваши варианты: (а) искать стороннюю альтернативу, которая предоставляет эту функциональность, или (б) писать такие замену себе.
Возможно, другой читатель знает о хорошей сторонней альтернативе, или вам может повезти с поиском в Google. Если вы решите выбрать вариант (b), возможно, я смогу дать вам фору, так что напишите мне письмо, если хотите - мой адрес указан в моем профиле. Или вы можете задать вопрос в StackOverflow.
У Srvany есть несколько хорошо известных недостатков, один из которых не прекращая процесс, который он запускает.
Обязательно прочтите о других потенциальных проблемах на на этой странице сравнивается Srvany и AlwaysUp (наше коммерческое приложение, которое закроет все подпроцессы, как вы ожидаете), чтобы избежать сюрпризов ...