Перезагрузка конфигурации с помощью 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 не менялся в течение последних пяти лет.

Другие вопросы по тегам