Jak rozróżnić właściwości testowe i produkcyjne w aplikacji?

Opracowujemy duże rozwiązanie e-sprzedaży J2ee. Ma wiele integracji: CMS, ERP, serwer pocztowy itp. Wszystkie te systemy są podzielone na środowiska testowe i produkcyjne.

Musimy wdrożyć naszą aplikację na naszych serwerach testowych z konfiguracją testową i po wdrożeniu na naszych serwerach produkcyjnych powinna ona korzystać z konfiguracji produkcyjnej. Jak sprawić, by nasza aplikacja wybrała prawidłowe właściwości?

Dotychczas próbowaliśmy tego:

Wszystkie nasze pliki właściwości zawierają właściwości testowe i właściwości produkcyjne

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

Util, który odczytuje te właściwości, ma przełącznik: isTest (), który poprzedza klucz „test”.

public String getProperty(String property)
{
    return properties.getProperty(prefix + "" + property);
}

Przełącznik jest ustawiany przez inną właściwość, która jest tworzona przez nasz serwer kompilacji. Po zbudowaniu .EAR skrypt dla naszych serwerów produkcyjnych wstrzykuje (wejście do build.xml) "isProduction = true" do system.properties.

<propertyfile file="${buildDir}/system.properties">
        <entry  key="isProduction" value="${systemType}"/>
    </propertyfile>

Nie jestem pewien, czy to najlepszy sposób. Jeśli z jakiegoś powodu „isProduction = false” zostanie popełnione błędnie w naszym środowisku produkcyjnym, piekło jest luźne.

Czytałem, że ludzie mają właściwości lokalnie na serwerze. Ale tak naprawdę nie chcemy, aby pliki były rozproszone. Mamy klaster serwerów produkcyjnych. Upewnienie się, że każdy serwer ma odpowiedni plik właściwości, nie wydaje się bezpieczne

questionAnswers(4)

yourAnswerToTheQuestion