Мы разрабатываем большое решение для электронной продажи 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(), который префикс ключа "test".
public String getProperty(String property) { return properties.getProperty(prefix + "" + property); }
Переключатель устанавливается другим свойством, созданным нашим сервером сборки. Когда .EAR построен, script для наших производственных серверов внедряет (input to build.xml) "isProduction = true" в system.properties.
<propertyfile file="${buildDir}/system.properties">
<entry key="isProduction" value="${systemType}"/>
</propertyfile>
Я не уверен, что это лучший способ сделать это. Если по какой-либо причине "isProduction = false" ошибочно совершается в нашей производственной среде, весь ад свободен.
Я читал, что у людей есть свойства локально на сервере. Но мы действительно не хотим, чтобы файлы распространялись. У нас есть кластер производственных серверов. Убедитесь, что каждый сервер имеет правильный файл свойств, который не выглядит безупречным