Как запустить и сохранить работу службы Windows после выхода из программы Java? [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как запустить и сохранить работу службы Windows после выхода из программы Java? [дубликат]

Сообщение Anonymous »

Я следовал другим примерам Stack Overflow, которые относятся к этому вопросу, но они показывают только, как запустить службу и поддерживать ее работоспособность внутри программы Java. Мой вопрос в другом. Мне нужно запустить службу из программы Java, а затем выйти из программы Java и продолжить работу этой службы. Затем через несколько дней остановите эту службу из программы Java.
Вот код Java, который я использую для запуска службы, но как только программа Java выходит из службы Windows, он начался и завершил работу, и это проблема, которую я пытаюсь решить.

Код: Выделить всё

String[] startScript = { "C:/test.exe", "/c", "sc", "start", "Test" };

Runtime.getRuntime().exec(startScript);

// java program exits here but service won't keep running
Примерно через 5 дней мне нужно остановить службу с помощью кода Java, похожего на этот пример кода...

Код: Выделить всё

String[] stopScript = { "C:/test.exe", "/c", "sc", "stop", "Test" };

Runtime.getRuntime().exec(stopScript);
Test.exe — это сервер сокетов прослушивания, который продолжает принимать соединения до тех пор, пока не будет остановлен. К вашему сведению, у меня уже установлен этот «test.exe» как служба Windows, и я вижу, что он появляется в диспетчере задач после запуска из приведенного выше кода Java, но только на мгновение, а затем он закрывается после завершения работы программы Java.
Как я могу сохранить работу «test.exe» после выхода из программы Java?
ОБНОВЛЕНИЕ: Проблема была решена благодаря предоставленным комментариям. Мне пришлось изменить команды запуска и остановки на (обратите внимание: эти команды работают только с настоящей службой Windows)...

Код: Выделить всё

// start from java

String[] startScript = { "sc", "start", "Test" };

Runtime.getRuntime().exec(startScript);

// stop from java

String[] stopScript = { "sc", "stop", "Test" };

Runtime.getRuntime().exec(stopScript);

Мне также пришлось предоставить разрешения на запуск/остановку службы из учетной записи без прав администратора. Теперь я могу запустить службу из Java, затем выйти из Java, и служба все еще будет работать. Вернитесь позже и остановите службу из Java.
Однако у меня возникла одна небольшая проблема при остановке службы. Служба была установлена ​​с помощью NSSM (поскольку у меня возникли проблемы при установке службы с помощью команд Windows) и запускается под ней как дочерний процесс. Когда я останавливаю службу тестирования, она останавливается нормально, но родительская служба NSSM продолжает работать, что не позволяет мне снова запустить службу тестирования.

Подробнее здесь: https://stackoverflow.com/questions/791 ... gram-exits
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»