#java #batch-file #windows-services #tomcat9
Вопрос:
У меня были трудные времена в течение нескольких дней, поэтому я посещаю Переполнение стека.
В настоящее время я использую Tomcat 9 на веб-сервере Java(OpenJDK11). Реализовано для запуска пакетного файла сервера с использованием среды выполнения.
Однако он работает с отладкой eclipse, но не работает при регистрации в службе Windows.
В чем причина? И каково же решение?
Дай мне знать ответ.
Краткие сведения:
WebServer(Eclipse) -> batch-file1 -> batch-file2 : success
WebServer(windows service) -> batch-file1 -> batch-file2 : Fail
Java-код :
String command = "C:\TOMCAT9\bin\getAuth_restart.bat";
Runtime.getRuntime().exec(command);
Мой пакетный файл 1 :
@эхо выключено
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/k ""%~dp0restart.bat"" %params%", "", "runas", 1 >> "%temp%getadmin.vbs"
"%temp%getadmin.vbs"
del "%temp%getadmin.vbs"
Мой пакетный файл 2 (restart.bat) :
taskkill /F /FI "services eq MyService" timeout /t 5 >nul
net start MyService
Комментарии:
1. Может быть проблема с разрешениями. Проверьте, работает ли ваша служба от имени системы или конкретного пользователя. Используйте ProcessBuilder вместо среды выполнения для записи stdout/err и кода выхода, чтобы получить дополнительную информацию об ошибках.
2. Последние версии Tomcat по умолчанию запускаются как
LocalService
. Старшие побежали так жеSYSTEM
.3. вау… Проблема заключалась в том, что служба была локальной службой! Я изменил службу на LocalSystem, выполнив следующую команду, и она отлично работает. sc config Myservice obj=Локальная система
4. пожалуйста, добавьте это в качестве ответа (и примите его), чтобы удалить этот вопрос из очереди «без ответа».