Как запустить / остановить Tomcat как службу Windows из программы Java, а не только из.bat?
Я знаю, как запустить / остановить Tomcat из Java-программы, используя BAT-файлы (и.sh-файлы в linux/unix). это сделано так:
String command = "c:\program files\tomcat\bin\startup.bat";//for linux use .sh
Process child = Runtime.getRuntime().exec(command);
Примечание. Используйте CATALINA_HOME, чтобы сделать этот код более динамичным.
Сейчас я ищу способ запустить / остановить службу Windows Tomcat из Java-программы. Я хочу запустить / остановить Tomcat из Java, как если бы я вошел в Панель управления -> Администрирование -> Службы. Можно ли это сделать таким образом, или использование BAT-файлов - это максимум, что мы можем сделать?
Я видел вопрос запуска службы Windows из Java, но когда я попробовал это с "sc", то process.isAlive()
был ВСЕГДА false
и когда я использовал "net" вместо "sc", то process.isAlive()
всегда true
, даже когда я использовал serviceName = "aliceinwonderland"
, Пример кода, который я использовал:
//String servicename = "Dhcp"; // real service that exists and started.
String serviceName = "aliceinwonderland"; // fiction, no such service
//String[] script = {"cmd.exe", "/c", "sc", "query", serviceName, "|", "find", "/C", "\"RUNNING\""};
String[] script = {"cmd.exe", "/c", "net", "query", serviceName, "|", "find", "/C", "\"RUNNING\""};
Process process = Runtime.getRuntime().exec(command);
boolean alive = process.isAlive(); // using "sc" = false; using "net" = true
1 ответ
Вы можете использовать Windows Service Controller (sc
) команда из cmd.exe
, как это:
String[] script = {"cmd.exe", "/c", "sc", "start", "Tomcat8"};
Runtime.getRuntime().exec(script);
Это при условии, что у вас установлена служба Tomcat и названа Tomcat8
, Вы можете проверить инструкции по установке здесь.