¿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