2011-07-26 3 views
4

Я запускаю java-приложения, и мне нужно закрыть/закрыть все приложения из окна сценария bat bat. Так что мой вопрос:
Как вызвать выключение крюка с помощью скрипта windows bat и изящно выключить java-программу.Как сделать изящное завершение/завершение Java-процессов?

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

ответ

4

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

3

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

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

+1

Java 7 (еще не выпущен) имеет API мониторинга файлов, теперь вы можете использовать библиотеку JNotify с открытым исходным кодом. – djna

5

Посмотрите на метод addShutdownHook в классе Runtime.

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

UPDATE: В соответствии с комментарием ниже, есть команда Taskkill в оболочке окна, которая подобна команде * Никс убить. Например, TASKKILL /IM java.exe прекратит все java-процессы. TASKLIST может использоваться для поиска всех запущенных процессов. Использование этого в сочетании с shutdownhook должно дать вам изящные возможности.

+0

Речь идет о вызове потоков при выключении, но не при запуске самого выключения. – weekens

 Смежные вопросы

  • Нет связанных вопросов^_^