Un requerimiento usual en el ciclo de desarrollo de sistemas empresariales es el contar con múltiples ambientes, por ejemplo desarrollo, pruebas, pre-producción, producción.
Normalmente estos ambientes son semejantes pero no iguales y para el propósito de esta nota la diferencia importante radica en ciertas características de configuración como URLs (incluyendo direcciones IP y puertos), rutas al filesystem, etc.
Las soluciones para manejar los aspectos de configuración y facilitar la construcción de los productos a instalar pueden ser diversas: uso de archivos de propiedades y modificación manual de las mismas al momento de generar los productos, uso de diferentes scripts de construcción (para ant el build.xml o para maven el pom.xml), uso de los perfiles de maven, etc.
Otra posible solución es almacenar las propiedades de configuración en la base de datos y utilizar la clase DatabaseConfiguration de Apache Commons-Configuration para obtener estas propiedades y complementandola con el uso de perfiles de maven o variables de ambiente para determinar el ambiente.
Esta solución tiene la ventaja de que las propiedades del sistema son centralizadas, no requiere re-instalación de la aplicación cuando se necesite cambiar alguna propiedad y ayuda a proteger información sensitiva.