Как различить тестовые и производственные свойства в приложении?
Мы разрабатываем большое решение для электронных продаж J2ee. Он имеет множество интеграций: CMS, ERP, Почтовый сервер и т. Д. Все эти системы разделены на тестовую и производственную среды.
Нам необходимо развернуть наше приложение на наших тестовых серверах с тестовой конфигурацией, а при развертывании на наших производственных серверах оно должно использовать производственную конфигурацию. Как заставить наше приложение выбрать правильные свойства?
То, что мы до сих пор пробовали, это:
Все наши файлы свойств содержат свойства теста и производственные свойства
test.mvxapi.server = SERV100TS test.mvxapi.username = user test.mvxapi.password = password test.mvxapi.port = 6006 test.mvxapi.cono = 600 mvxapi.server = SERV10001 mvxapi.username = user mvxapi.password = password mvxapi.port = 6001 mvxapi.cono = 100
Утилита, которая читает эти свойства, имеет переключатель: isTest (), который ставит ключ перед «quot; test».
public String getProperty(String property) { return properties.getProperty(prefix + "" + property); }
Переключатель устанавливается другим свойством, которое создается нашим сервером сборки. При сборке .EAR скрипт для наших производственных серверов внедряет (ввод в build.xml) & quot; isProduction = true & quot; в system.properties.
<propertyfile file="${buildDir}/system.properties">
<entry key="isProduction" value="${systemType}"/>
</propertyfile>
Я не уверен, что это лучший способ сделать это. Если по какой-либо причине "isProduction = false" ошибочно относится к нашей производственной среде, все чертовски свободно.
Я читал, что у людей есть свойства локально на сервере. Но мы действительно не хотим, чтобы файлы распространялись по всему. У нас есть кластер производственных серверов. Убедиться в том, что на каждом сервере имеется нужный файл свойств, не представляется отказоустойчивым