Убить сеанс Windows из Java-программы - PullRequest
2 голосов
/ 19 мая 2009

Я использую сервер Tomcat и пытаюсь обновить код на этом сервере. Для этого мне нужно надежно завершить работу сервера в среде Windows. Насколько мне известно, у скрипта tomcat shutdown.bat могут быть проблемы с убегающими потоками, и мне нужно, чтобы это работало, даже если я случайно создаю поток, который будет препятствовать работе скрипта .bat. Подход, который я пробовал, состоит в том, чтобы запустить команду NET STOP с именем службы - однако в некоторых случаях у меня на одном компьютере работает несколько tomcats (что означает несколько служб). Есть ли способ получить имя службы, связанной с котом, на котором выполняется мой код? Есть ли другие хорошие решения моей проблемы, на которые мне стоит обратить внимание?

У меня много клиентов, и поэтому я бы предпочел решение, которое не предусматривает установку дополнительного программного обеспечения или жесткое кодирование названия службы.

Ответы [ 4 ]

1 голос
/ 19 мая 2009

Если вы ищете имя службы из Vm, в которой запущен tomcat, вы можете захотеть взглянуть на материал ManagementBean, в следующем посте по sun подробно расскажет:

Форумы на солнце

Все, что вы делаете, будет довольно хакерским, поскольку все зависит от ОС! Я бы определенно рекомендовал придерживаться сервисов управления и развертывания Tomcat, вам даже не нужно убивать процесс Tomcat, вы должны иметь возможность повторно развернуть свое веб-приложение с помощью средства горячего развертывания tomcat - либо из панели управления, либо из предоставленных библиотек ant. с котом.

0 голосов
/ 24 июля 2009

Просто обнаружил, что службы перечислены в реестре Windows с ключами, такими как "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \" и именем службы. Путь к изображению содержит полный путь к исполняемому файлу. Если я сканирую реестр, я могу сопоставить домашний URL tomcat с путем к исполняемому файлу и получить имя службы из ключа. Тогда я могу просто запустить чистый стоп на этом.

0 голосов
/ 19 мая 2009

Tomcat hotdeploys. Есть ли какая-то особая причина, по которой вы не можете просто добавить новые файлы WAR?

0 голосов
/ 19 мая 2009

Используйте cygwin и netstat для поиска процесса, прослушивающего этот порт, а затем убейте его с помощью PID. Мой подход.

...