¿Cómo diferenciar las propiedades de prueba y producción en una aplicación?

Estamos desarrollando una gran solución de ventas electrónicas J2ee. Tiene muchas integraciones: CMS, ERP, servidor de correo, etc. Todos estos sistemas se dividen en entornos de prueba y producción.

Necesitamos implementar nuestra aplicación en nuestros servidores de prueba con configuración de prueba y cuando se implementa en nuestros servidores de producción, debe utilizar la configuración de producción. ¿Cómo hacemos que nuestra aplicación seleccione las propiedades correctas?

Lo que hemos intentado hasta ahora es esto:

Todos nuestros archivos de propiedades contienen propiedades de prueba y propiedades de producción.

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

El Util que lee estas propiedades tiene un modificador: isTest () que prefija la clave con "prueba".

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

El interruptor está establecido por otra propiedad que es creada por nuestro servidor de compilación. Cuando se crea el .EAR, la secuencia de comandos para nuestros servidores de producción se inyecta (input to build.xml) "isProduction = true" en system.properties.

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

No estoy seguro de que esta sea la mejor manera de hacerlo. Si, por alguna razón, "isProduction = false" se comete incorrectamente en nuestro entorno de producción, todo el infierno está suelto.

He leído que las personas tienen propiedades localmente en el servidor. Pero realmente no queremos tener archivos esparcidos. Disponemos de clúster de servidores de producción. Asegurarse de que cada servidor tenga el archivo de propiedad correcto no parece a prueba de fallas

Respuestas a la pregunta(4)

Su respuesta a la pregunta