Lo que hacemos es colocarlo en un directorio separado en el servidor (puede usar algo como/config,/opt/config,/root/config,/home/username/config, o cualquier cosa que desee). Cuando nuestros servlets se inician, leen el archivo XML, sacan algunas cosas de él (lo más importante es información de conexión DB), y eso es todo.
Le pregunté por qué lo hicimos una vez.
Sería bueno almacenar todo en la base de datos, pero obviamente no se puede almacenar la información de conexión de base de datos en la base de datos.
Puede codificar cosas en el código, pero eso es feo por muchas razones. Si la información tiene que cambiar, debe reconstruir el código y volver a implementarlo. Si alguien obtiene una copia de tu código o tu archivo WAR, ellos obtendrían esa información.
Poner cosas en el archivo WAR parece agradable, pero si quiere cambiar mucho las cosas, podría ser una mala idea. El problema es que si tiene que cambiar la información, la próxima vez que la vuelva a implementar sobrescribirá el archivo para que todo lo que no recuerda cambiar en la versión que se integra en el WAR quede olvidado.
El archivo en un lugar especial en el sistema de archivos funciona bastante bien para nosotros. No tiene grandes inconvenientes. Ya sabes dónde está, se almacena por separado, hace que la implementación en varias máquinas sea fácil si todos necesitan diferentes valores de configuración (ya que no es parte de la GUERRA).
La única otra solución que puedo pensar que funcionaría bien sería mantener todo en la base de datos, excepto la información de inicio de sesión de la base de datos. Eso vendría de las propiedades del sistema Java que se recuperan a través de la JVM. Esto es lo de la API de Preferencias mencionado por Hans Doggen arriba. No creo que haya existido cuando nuestra aplicación se desarrolló por primera vez, si fue que no se usó.
En cuanto a la ruta para acceder al archivo de configuración, es solo un archivo en el sistema de archivos. No necesita preocuparse por la ruta web. Entonces, cuando su servlet se inicia, solo abre el archivo en "/config/myapp/config.xml" (o lo que sea) y encontrará lo correcto. Solo codificar el camino para esto me parece bastante inofensivo.
Tenga en cuenta que no existe un mecanismo predeterminado para los motores de servlets; deberá realizar suposiciones específicas del proveedor. –