Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как рабоать с конфигами ?


Автор: startpoint 3.12.2012, 16:50
Суть проблемы в следующем. Есть несколько окружений (Development, Testing, Staging, Production) в котором функционирует приложение. Приложение собирается при помощи maven.
Development - это приложение на локальной машине, после того, как мы его собрали через mvn compile
Testing - это приложение на локальной машине, после того, как мы его собрали через mvn package
Staging - это собраное через mvn package приложение на удалённой машине, расположенное в моей домашней директории
Production - это собраное через mvn package приложение на удалённой машине, в той самой директории, где его могут юзать все
Я хочу использовать три разных конфига для этих окружений. Один для Development/Testing, второй для Staging и третий для прода. Как это делать ?

Как я делаю это сейчас. Сейчас у меня есть только два конфига, которые выглядят например вот так:
tools.development.xml
tools.production.xml
Т.е. один для прода, и другой для dev-окружения. Как приложение узнаёт, какой же конфиг ему использовать ? По домену, вот так:
Код
InetAddress localMachine = InetAddress.getLocalHost();
String hostName = localMachine.getHostName();
if (hostName.equals("my.production.domain")) {
    String mode = "production";
} else {
    String mode = "development";
}

Безкомпромисный отстой, который уже ломался, когда меняли домен. Нужно делать так, что если не удаётся точно установить, где приложение, то работать оно должно в production-режиме. Вообщем схема никакая и как это делать я не понимаю. Как делаете это вы ?

Автор: LSD 3.12.2012, 18:09
А что за приложение, standalone, web/jee app?

Автор: COVD 3.12.2012, 18:19
Мы для standalone серверных приложений прописываем соответствующий параметр в строке запуска в bat файле. Если не указан, программа работает в development.

Автор: startpoint 3.12.2012, 19:17
LSD
Приложение имеет и консольный и web-интерфейс. Web морда деплоится в соответствующую папку web-сервера, консольное приложение со скриптами для его запуска в отдельную директорию.

Автор: LSD 3.12.2012, 19:25
Для консольного варианта, можно сделать параметр запуска который бы указывал на проперти файл с конфигам. И соответвенно в CLASSPATH иметь проперти файлы с конфигами для все окружений.

Автор: Farmazon 8.12.2012, 19:59
есть вариант мавеновские профили использовать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)