Estamos desarrollando una gran solución de e-sales J2ee. Tiene muchas integraciones: CMS, ERP, servidor de correo, etc. Todos estos sistemas se dividen en entornos de prueba y producción.¿Cómo diferenciar entre propiedades de prueba y producción en una aplicación?
Tenemos que 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 usar la configuración de producción. ¿Cómo hacemos que nuestra aplicación seleccione las propiedades correctas?
Lo que hemos tratado hasta ahora es la siguiente:
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 interruptor: isTest() que prefije la clave con "prueba".
public String getProperty(String property) { return properties.getProperty(prefix + "" + property); }
El interruptor está configurado por otra propiedad creada por nuestro servidor de compilación. Cuando se construye .EAR, el script para nuestros servidores de producción inyecta (entrada a build.xml) "isProduction = true" en system.properties.
<propertyfile file="${buildDir}/system.properties">
<entry key="isProduction" value="${systemType}"/>
</propertyfile>
No estoy seguro de si esta es la mejor manera de hacerlo. Si por alguna razón "isProduction = false" se comete de forma incorrecta en nuestro entorno de producción, todo el infierno está perdido.
He leído que las personas tienen propiedades localmente en el servidor. Pero realmente no queremos tener archivos repartidos. Tenemos un clúster de servidores de producción. Asegurarse de que cada servidor tenga el archivo de propiedad correcto no parece seguro
Muchos han cambiado el tamaño 2009 :) Spring ahora tiene una forma de hacer esto en los perfiles: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html – Tommy