Перезагрузка конфигурации с помощью Jakarta Commons Daemon

Используя Jakarta Commons Daemon, можно ли заставить мое Java-приложение выполнить действие (перезагрузить конфигурации) когда сигнал SIGHUP отправляется процессу jsvc? Если нет - какие у меня есть другие варианты перезагрузки конфигурации с этой библиотекой - без остановки процесса? Я просмотрел документацию, но не нашел ясности в этом вопросе.

Примечание. Мне не нужен кроссплатформенный способ обработки сигналов. Я просто хочу знать, что предлагает Jakarta Commons Daemon с точки зрения перезагрузки конфигурации при использовании с платформой на основе UNIX.


person teabot    schedule 05.01.2010    source источник


Ответы (1)


В Java нет кроссплатформенного способа обработки сигналов. Лучше всего открыть Socket и дождаться ввода данных. Используйте netcat или небольшую программу на Java для подключения к сокету. Внутри примите соединение, перезагрузите и закройте соединение. Вам даже не нужно отправлять данные туда и обратно.

[EDIT] Кажется, нет никакой поддержки для обработки сигналов в C-части Jakarta Commons Daemon. См. эту статью IBM о том, как реализовать собственный обработчик сигналов в библиотека JNI. Он был написан для Java 1.3, но по-прежнему действителен для Java 5 и 6.

[EDIT2] Если переносимость не является проблемой, вы можете попробовать недокументированный и неподдерживаемый класс sun.misc.Signal. См. эту тему. Обратите внимание, что он не поддерживается, не документирован и т. д., а API не менялся последние пять лет.

person Aaron Digulla    schedule 05.01.2010
comment
Привет, это был не мой вопрос. Мне не нужен кроссплатформенный способ обработки сигналов. Меня интересует только то, как это достигается с помощью Jakarta Commons Daemon. - person teabot; 05.01.2010
comment
Я понимаю. Мой ответ: JCD не помогает в вашем случае, а виртуальная машина Java не предлагает никаких других вариантов. - person Aaron Digulla; 05.01.2010