Как сделать изящное завершение / завершение процессов Java? - PullRequest
4 голосов
/ 26 июля 2011

Я запускаю несколько java-приложений, и мне нужно изящно завершить работу / закрыть все приложения из скрипта Windows Bat.Итак, мой вопрос:
Как вызвать shutdown hook с помощью скрипта Windows Bat и корректно завершить работу Java-программы.

Любое предложение приветствуется.Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 26 июля 2011

Взгляните на метод addShutdownHook в классе Runtime.

Runtime.getRuntime().addShutdownHook(...);

ОБНОВЛЕНИЕ: Согласно комментарию ниже, в оболочке Windows есть команда TASKKILL, которая похожа на команду * nix kill. Например, TASKKILL /IM java.exe завершит все процессы Java. TASKLIST может использоваться для поиска всех запущенных процессов. Использование этого в сочетании с выключателем должно дать вам необходимые изящные возможности.

4 голосов
/ 26 июля 2011

"Изящное" завершение работы в Java обычно достигается за счет того, что все потоки, не являющиеся демонами, нормально завершают свою работу.Если ваше приложение прослушивает команду «shutdown» на каком-либо порту, вы можете заставить скрипт запускать команду для этого порта, которую затем можно использовать для установки соответствующих флагов для прекращения работы потоков, позволяя JVM завершить работу.,Это, наверное, самый простой способ, которым я видел это.

3 голосов
/ 26 июля 2011

Ваш скрипт .bat будет процессом, внешним по отношению к ВМ. Так что вам нужно будет внедрить какой-то IPC в ваше Java-приложение. Некоторые относительно простые варианты могут использовать RMI или JMX.

Другая возможность заключается в использовании некоторого файла, который может быть просмотрен вашим приложением и который может быть изменен сценарием .bat, чтобы другой процесс распознал, что ему нужно завершить работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...