воскресенье, 21 марта 2010 г.

Обновление файла конфигурации без перезагрузки сервера.

Суть задачи: некоторая часть наполнения системы является редко изменяемой и не требует своего хранения в базе данных. Пример: раздел справки на сайте. Он может храниться в файле(текстовом, файле - свойств или xml), а система зачитывает его при старте. Если файл обновляется, то система должна обновить его. Тут и возникает вопрос как реализовать функциональность таким образом, чтобы не нужно было останавливать сервер приложений.

Для этих целей подходит удобная библиотека commons-configuration от apache. В ней есть различные интерфейсы позволяющие работать как с файлами свойств (*.properties), так и с xml файлами. Предположим, что мы храним справочную информацию в файле help.xml. Ниже приводится код, позволяющий подгружать актуальный файл при каждом обращении к нему.


Теперь каждый раз когда будет происходить обращение к файлу, будет проверяться время его последнего изменения и данные будут всегда актуальны.

Но это не все. Нужно чтобы этот код вызывался периодически, чтобы обновлять in-memory модель данных, которая строится на основе этого файла. Для достижения этой цели я использую job, spring и qwartz.




HelpLoader - класс, реализующий метод loadHelp. Остальной код - обвязка этого класса, позволяющая вызывать метод loadHelp каждые 50 секунд.

Комментариев нет:

Отправить комментарий