Tuvimos un requisito configuración similar al desplegar una aplicación web para diferentes desarrolladores, y en EC2 de Amazon: ¿Cómo separamos de configuración desde el código binario? En mi experiencia, JNDI es demasiado complejo y varía demasiado entre contenedores para ser utilizado. Además, la edición manual de XML es muy susceptible a los errores de sintaxis, por lo que la idea se descartó. Se resolvieron con un diseño basado en unas pocas reglas:
1) único nombre sencilla = entradas de valor se deben utilizar
2) nuevas configuraciones debe ser cargable cambiando sólo un parámetro
3) nuestra binario guerra debe ser reconfigurable w/o reenvasado que
4) parámetros sensibles (contraseñas) nunca serán empaquetados en el binario
usando .properties archivos para toda la configuración, y el uso de System.getProperty("domain");
para cargar los archivos de propiedades apropiados, pudimos cumplir con los requisitos. Sin embargo, la propiedad del sistema no apunta a un archivo URL, en su lugar, creamos un concepto que llamamos "dominio" para especificar la configuración a usar. La ubicación de la configuración siempre es:
$HOME/appName/config/$DOMAIN.properties
.
Así que si quiero ejecutar mi aplicación con mi propia configuración, comienzo de la aplicación estableciendo el dominio a mi nombre:
-Ddomain=jason
en el arranque, y la aplicación carga el archivo:
/home/jason/appName/config/jason.properties
Este permite a los desarrolladores compartir configuraciones para que podamos recrear el mismo estado de la aplicación para probar e implementar sin volver a compilar o volver a empaquetar. El valor del dominio se usa para cargar .properties desde una ubicación estándar, fuera del WAR incluido.
puedo recrear completamente el entorno de producción en mi estación de trabajo mediante el uso de la configuración de producción como:
-Ddomain=ec2
que cargar:
/home/jason/appName/config/ec2.properties
Esta configuración permite que tienen ciclos dev/GC/liberación con exactamente -uno- conjunto de binarios compilados, usando diferentes configuraciones en cada entorno. No hay riesgo de tener contraseñas/etc incluidas en los binarios, y las personas pueden compartir sus configuraciones para recrear los problemas que estamos viendo.
Java EE 8 puede presentar algo llamado "servicio de configuración" para cosas como esta. Ver http://www.jfokus.se/jfokus13/preso/jf13_JavaEEConfiguration.pdf también ver http: // java.net/jira/browse/JAVAEE_SPEC-19 –
¿Por qué no utilizar argumentos jva? – djmj