Wie kann man in einer Anwendung zwischen Test- und Produktionseigenschaften unterscheiden?

Wir entwickeln eine große J2ee E-Sales-Lösung. Es gibt viele Integrationen: CMS, ERP, Mailserver usw. Alle diese Systeme sind in Test- und Produktionsumgebungen unterteilt.

Wir müssen unsere Anwendung mit Testkonfiguration auf unseren Testservern bereitstellen, und wenn sie auf unseren Produktionsservern bereitgestellt wird, sollte sie die Produktionskonfiguration verwenden. Wie lassen wir unsere Anwendung die richtigen Eigenschaften auswählen?

Was wir bisher versucht haben, ist Folgendes:

Alle unsere Eigenschaftendateien enthalten Testeigenschaften und Produktionseigenschaften

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

Das Util, das diese Eigenschaften liest, hat einen Schalter: isTest (), der dem Schlüssel "test" voranstellt.

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

Der Schalter wird durch eine andere Eigenschaft festgelegt, die von unserem Build-Server erstellt wird. Wenn die .EAR-Datei erstellt wird, fügt das Skript für unsere Produktionsserver (Eingabe in build.xml) "isProduction = true" in system.properties ein.

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

Ich bin mir nicht sicher, ob dies der beste Weg ist. Wenn aus irgendeinem Grund "isProduction = false" fälschlicherweise für unsere Produktionsumgebung verwendet wird, ist die Hölle los.

Ich habe gelesen, dass Leute Eigenschaften lokal auf dem Server haben. Aber wir wollen wirklich keine Dateien haben, die verteilt werden. Wir haben Cluster von Produktionsservern. Sicherzustellen, dass jeder Server über die richtige Eigenschaftendatei verfügt, scheint nicht ausfallsicher zu sein

Antworten auf die Frage(5)

Ihre Antwort auf die Frage