Суть задачи: некоторая часть наполнения системы является редко изменяемой и не требует своего хранения в базе данных. Пример: раздел справки на сайте. Он может храниться в файле(текстовом, файле - свойств или xml), а система зачитывает его при старте. Если файл обновляется, то система должна обновить его. Тут и возникает вопрос как реализовать функциональность таким образом, чтобы не нужно было останавливать сервер приложений.
Для этих целей подходит удобная библиотека commons-configuration от apache. В ней есть различные интерфейсы позволяющие работать как с файлами свойств (*.properties), так и с xml файлами. Предположим, что мы храним справочную информацию в файле help.xml. Ниже приводится код, позволяющий подгружать актуальный файл при каждом обращении к нему.
Теперь каждый раз когда будет происходить обращение к файлу, будет проверяться время его последнего изменения и данные будут всегда актуальны.
Но это не все. Нужно чтобы этот код вызывался периодически, чтобы обновлять in-memory модель данных, которая строится на основе этого файла. Для достижения этой цели я использую job, spring и qwartz.
HelpLoader - класс, реализующий метод loadHelp. Остальной код - обвязка этого класса, позволяющая вызывать метод loadHelp каждые 50 секунд.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий