2016-09-06 2 views
0

Рассмотрите автономный uberjar Java, который действует как HTTP-сервер и запускается как служба Linux. Некоторые его функции зависят от внешнего файла конфигурации, который может меняться один раз.Сделайте приложение Java перезагрузите его файл конфигурации во время работы

Я стараюсь не перезапускать приложение при каждом изменении конфигурации. Как это можно сделать правильно? Я сразу подумал о том, чтобы отправить SIGHUP. Может ли это быть захвачено java-приложением? Или, может быть, есть еще один способ добиться этого?

+2

Что вы хотите сделать, не совсем понятно ... Вы можете контролировать файл в java для изменений (с помощью API WatchService, https://docs.oracle.com/javase/7/docs/api/java/nio /file/WatchService.html), но код Java будет уведомлен только о том, что файл конфигурации был изменен. Перезагрузка конфигурации, закрытие старого HTTP-порта и открытие нового (например) или что-либо из изменений конфигурации подразумевают, должны быть частью кода приложения, которые должны быть явно разработаны для обработки изменений конфигурации во время выполнения. –

ответ

0

Я хотел бы использовать HTTP для отправки команды для загрузки файла конфигурации. Для этого потребуется ввести специальный HTTP-запрос (например, настраиваемый заголовок X-Uberjar-Reload-Config, который будет запускать операцию при использовании с корневым URI). Я бы установил значение этого заголовка в хеш-файл MD5 или SHA1 конфигурационного файла, так что перезагрузка выполняется только в том случае, если представленная хэш-сумма соответствует таковой файла конфигурации.

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