Как в Java динамически перезагружать пакеты ресурсов в веб-приложении?

StackOverflow https://stackoverflow.com/questions/156586

  •  03-07-2019
  •  | 
  •  

Вопрос

Мы используем fmt:setBundle для загрузки пакета ресурсов из базы данных (для этого мы расширили класс ResourceBundle).Когда мы изменяем значение в базе данных, нам необходимо перезагрузить веб-сервер, чтобы отобразить новое значение в веб-приложении.

Есть ли простой способ использовать новое значение без перезапуска веб-сервера?

(Мы делаем нет хотим всегда искать значение в базе данных, но мы хотели бы сделать кеш недействительным, например, вызвав специальный URL-адрес администратора)

РЕДАКТИРОВАТЬ :Мы используем JDK 1.4, поэтому я бы предпочел решение для этой версии.:)

Это было полезно?

Решение

Как отмечали другие в комментариях, возможно, вы захотите изучить Spring, особенно ReloadableResourceBundleMessageSource.

Другие советы

Если вы используете JDK 1.6, вы можете использовать методы обратного вызова getTimeToLive() и needsReload() в ResourceBundle.Control чтобы контролировать, нужно ли загружать в кэш пакета новые значения из базы данных.

Сначала вы можете создать класс, который расширяется от ReloadableResourceBundleMessageSource чтобы раскрыть защищенный метод внутреннего класса, называемый getProperties.Этот метод возвращает параллельную карту из PropertiesHolder объект.Во-вторых, вам следует настроить компонент этого расширенного класса в классе веб-конфигурации.Теперь вы можете использовать messageSource на своем сервисном или бизнес-уровне.Вот ссылка на ссылку Настройка пакета источника перезагружаемых сообщений

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top