Наилучшая практика обработки специфичных для среды настроек для веб-приложения Java? - PullRequest
3 голосов
/ 22 января 2010

У меня есть веб-приложение на Java, которое выгружает некоторые специфические для среды настройки (конфигурации Hibernate, требуемые пути к каталогам и т. Д.) В файл свойств, который в конечном итоге упаковывается в развернутую WAR. Если я хочу распространять это веб-приложение, как лучше всего управлять этими настройками? Невозможно попросить пользователя открыть WAR, обновить файл свойств, перепаковать WAR, а затем развернуть. Я думал о создании установщика (например, NSIS, WiX), который запрашивает свойства, записывает их в WAR, а затем запрашивает место развертывания для WAR. Другой вариант заключается в том, чтобы файл свойств был внешним по отношению к WAR, и в соответствии с соглашением веб-приложение будет знать, где его прочитать. Какова лучшая практика в этом случае?

Ответы [ 2 ]

1 голос
/ 22 января 2010

В некоторых проектах, которые требуют такого рода конфигурации и сталкиваются с этой проблемой, используется подход построения проектов (и .war) на сервере, где он будет развернут.

Так что вместо:

  • Скопируйте предварительно упакованный файл .war в подходящее место

Вы получаете:

  • Проверка исходного кода из SCM (Subversion, CVS и т. Д.)
  • Настроить по вкусу
  • Создание проекта (автоматизировано с помощью Maven или Ant)
  • Развертывание проекта (также обычно автоматизированного с использованием Maven или Ant)

Отсюда вы можете получить фантазию, проверяя файлы конфигурации каждого сервера в SCM. Этот подход позволяет вам контролировать версии и проверять изменения конфигурации.

0 голосов
/ 27 мая 2013

Я также столкнулся с той же проблемой в проекте. Разработчик до меня сделал грубое исправление для решения, которое добавляло все необходимые настройки в файл hibernate.hbm.cfg.xml и комментировало их. Требуемые конфигурации были раскомментированы в соответствии с необходимостью. Однако есть лучшее решение проблемы.

  1. Использовать схему папки конфигурации
  2. Использование конфигурации чтения параметров
  3. Использование компонента ConfigurationReader

Источник: http://www.javaworld.com/javaworld/jw-11-2004/jw-1108-config.html

...