Перезагрузка конфигурации с помощью Jakarta Commons Daemon
Используя Jakarta Commons Daemon, можно ли заставить мое Java-приложение выполнить действие (перезагрузить конфигурацию), когда SIGHUP
сигнал отправляется на jsvc
процесс? Если нет - каковы другие варианты перезагрузки конфигурации с этой библиотекой - без остановки процесса? Я посмотрел на документацию, но не нашел это ясно по этому вопросу.
Примечание: мне не требуется кроссплатформенный способ обработки сигналов. Я просто хочу знать, что Jakarta Commons Daemon предлагает в плане перезагрузки конфигурации при использовании с платформой на основе UNIX.
1 ответ
У Java нет кроссплатформенного способа обработки сигналов. Лучше всего открыть Socket
и ждать некоторого ввода на нем. использование netcat
или небольшая Java-программа для подключения к сокету. Внутри примите соединение, перезагрузите и закройте соединение. Вам даже не нужно отправлять данные туда и обратно.
[EDIT] Кажется, что нет никакой поддержки для обработки сигналов в C части Jakarta Commons Daemon. Посмотрите в этой статье IBM, как реализовать свой собственный обработчик сигналов в библиотеке JNI. Он был написан для Java 1.3, но все еще действует для Java 5 и 6.
[EDIT2] Если переносимость не является проблемой, вы можете попробовать недокументированный и неподдерживаемый класс sun.misc.Signal
, Смотрите эту ветку. Обратите внимание, что он не поддерживается, недокументирован и т. Д., И API не менялся в течение последних пяти лет.