Как запустить / остановить 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, Вы можете проверить инструкции по установке здесь.

Другие вопросы по тегам