Задать вопрос
fornit1917
@fornit1917

Как принято конфигурировать окружение для web-приложения на Java?

В рамках изучения Java пишу небольшое web-приложение без использования фреймворков, только Servlets + Freemarker. Приложение собираю Maven-ом и деплою в Tomcat.
Мне хотелось бы где-то в конфиге иметь переменную, указывающую на то, в каком режиме запускается приложение (production/development/test), и чтобы в коде я мог читать значение этой переменной. Я могу добавить такой параметр в web.xml как context-param. Но мне непонятно, как можно сделать так, чтобы удобно и автоматически в него подставлялось "production", когда я буду деплоить приложение действительно на production сервер.
В качестве примера, как я это делал на PHP: там был конфиг, в котором значения некоторых параметров (пароль бд, окружение и т.д.) не были указаны явно. Они брались из другого файла, который у меня добавлен в игнор git-а. На рабочей машине он содержал настройки для development-окружения, а при деплое на production-сервер в него соответственно подставлялись настройки для production.
Можно ли нечто подобное в моем случае сделать на Java? И как вообще в мире Java принятно с этим управляться? Спасибо.

UPD: у меня еще была идея написать Listener, который при старте приложения читает какой-то конфиг (property-file), затем, если по определенному пути есть еще один конфиг, то читает его и переопределяем им соотвествующие свойства из первого конфига. Таким образом, я могу во втором конфиге разместить параметры для production и не хранить его в git-репозитории. Такой подход используется, или есть что-то более вменяемое?
  • Вопрос задан
  • 435 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
zolt85
@zolt85
Программист
Да тут собственно ничего особенного не придумано. Конкретно в maven можно это разрулить профилями. Грубо говоря, профили позволят maven-у намекнуть, какой файл с настройками положить в сборку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@protven
Передавайте путь к конфигурационному файлу через системные переменные, например. Или в вашем контейнере (Томкат) настраиваете data-source, и приложение при старте читает конфиги из БД. Вариантов масса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы