tomcat закрывается через идентификатор процесса (windows) - PullRequest
1 голос
/ 07 ноября 2010

Я хочу остановить процесс Tomcat по его идентификатору процесса. Как я могу получить идентификатор процесса Tomcat, используя Java?

Ответы [ 3 ]

2 голосов
/ 07 ноября 2010

Я не уверен, поможет ли это в случае Windows, но сценарий catalina.sh, который вы можете использовать в Linux / UNIX, может сказать, чтобы сохранить PID процесса в файле. Вам просто нужно установить переменную окружения CATALINA_PID на путь вашего PID-файла. Когда вы это сделаете, запуск catalina.sh stop -force попытается выполнить чистое завершение работы, а если это не удастся, то будет kill процесс Tomcat.

1 голос
/ 07 ноября 2010

Нет прямого способа получить доступ к PID, о котором я знаю, однако кто-то написал отличный блог о том, как сделать это косвенно. Вот ссылка на его 5 разных вариантов.

http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html

Самый хороший вариант это ...

Использование управления Java и API мониторинга (java.lang.management):

ManagementFactory.getRuntimeMXBean().getName();

возвращает что-то вроде: 28906 @ localhost, где 28906 - PID процесса JVM, который на самом деле PID моего приложения.

Этот хак зависит от JVM, и я проверил это только с Sun JVM.

Из Javadocs для метода getName () RuntimeMXBean: возвращает имя представляющий работающую виртуальную Java машина. Возвращенная строка имени может быть произвольной строкой и Java реализация виртуальной машины может выбрать для встраивания платформы полезная информация в возвращенном Строка имени. Каждый работает виртуальный машина может иметь другое имя.

0 голосов
/ 07 ноября 2010

Вы можете выполнить TASKLIST.EXE в Java и сохранить результат. Второй вариант, который мне показался интересным, - запустить команду остановки службы из Java.

Надеюсь, это поможет.

...