2015-05-08 2 views
1

Я развертываю военный файл для стеклянной рыбы и хотел бы знать, возможно ли иметь файл, который может иметь свойства, хранящиеся в них, к которым можно получить доступ в моих веб-методах. Уловка: я хотел бы изменить файл по мере изменения бизнес-запросов, не перекомпилировав. Я мог бы хранить его в БД или использовать его как системные свойства на самой стеклянной рыбке, но хотел бы знать, возможен ли путь к файлу.Доступ к сервлетам Java для файла конфигурации

Я прочитал их, но все кажется, что вам придется перекомпилировать ?:

Load properties file in Servlet/JSP

loading properties file in init() of servlet without using context-param tag in web.xml

+0

Я понимаю, что вы хотите избежать повторной компиляции. Разрешено ли перезапускать приложение при обновлении файла? –

+0

@Brett, повторный запуск будет в порядке. –

ответ

3

Конечно, вы можете. Вы можете загрузить свойства при запуске и указать время модификации файла; то вы можете повторно загрузить свойства снова, когда время модификации изменилось, то есть когда кто-то отредактировал его. Проверка и перезагрузка могут выполняться с использованием фонового потока или доступа, но будьте внимательны, чтобы обрабатывать синхронизацию, поскольку все одновременные запросы будут конкурировать друг с другом.

Я бы сохранил файл за пределами Glassfish и указал на него с использованием системного свойства или параметра контекста, но вы также можете редактировать файл свойств, в котором Glassfish извлек WAR-файл.

+0

Звучит многообещающе. Итак, у меня есть системное свойство, сохраняющее местоположение файла, и каждый раз, когда этот метод запускается, он может перезагрузить файл? –

+0

Да, в принципе. Однако перезагрузка файла при каждом доступе, вероятно, слишком дорога. Я бы, вероятно, использовал фоновое задание, которое проверяет изменения файлов каждую минуту или около того, и пусть оно перезагружает его, когда оно изменилось. – user2612030

+0

Спасибо. Я иду по этому маршруту. –

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