Перезапуск службы Tomcat через сервлет, размещенный в том же Tomcat. - PullRequest
0 голосов
/ 17 марта 2011

Я бы хотел перезапустить службу Tomcat в Windows XP, я создал сервлет, который вызывает командный файл

public void doGet (HttpServletRequest req, HttpServletResponse res) 
 throws ServletException, IOException  {

      Process p = Runtime.getRuntime().exec("c:\restart_tomcat.bat");
 }

добавлены следующие 2 строки в мой restart_tomcat.bat

   net stop "Tomcat6" 
   net start "Tomcat6"

запрос URL-адреса сервлета останавливает сервер Tomcat, но он не запускается. Однако, когда я запускаю командный файл restart_tomcat.bat, работает нормально

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

Процесс (например, restart_tomcat.bat), который запускается JVM, вероятно, также завершается при выходе из виртуальной машины, поэтому net start никогда не выполняется. Tomcat использует Commons Daemon , который, к сожалению, не поддерживает перезапуск JVM. (Или я не знаю, как это сделать.)

Быстрый взлом: установите автоматический режим восстановления службы.

В долгосрочной перспективе существует множество других JVM в качестве службы , некоторые из которых поддерживают самозапуск.

0 голосов
/ 17 марта 2011

попробуйте

Runtime.getRuntime().exec("cmd.exe /c start c:\restart_tomcat.bat");
...