Ce que nous faisons est de le placer dans un répertoire séparé sur le serveur (vous pouvez utiliser quelque chose comme /config, /opt/config, /Root/config, /home/username/config, ou ce que vous voulez). Lorsque nos servlets démarrent, ils lisent le fichier XML, en extraient quelques éléments (surtout les informations de connexion à la base de données), et c'est tout.
J'ai demandé pourquoi on avait fait ça une fois.
Ce serait bien de tout stocker dans la base de données, mais il est évident que vous ne pouvez pas stocker les informations de connexion à la base de données dans la base de données.
Vous pourriez coder les choses en dur dans le code, mais c'est laid pour de nombreuses raisons. Si l'information doit être modifiée, vous devez reconstruire le code et le redéployer. Si quelqu'un obtient une copie de votre code ou de votre fichier WAR, il obtiendra ces informations.
Mettre les choses dans le fichier WAR semble être une bonne idée, mais si vous voulez changer beaucoup de choses, cela peut être une mauvaise idée. Le problème est que si vous devez modifier les informations, la prochaine fois que vous redéployerez le produit, le fichier sera écrasé et tout ce que vous n'avez pas pensé à modifier dans la version intégrée au WAR sera oublié.
L'idée du fichier dans un endroit spécial du système de fichiers fonctionne assez bien pour nous. Il n'y a pas de gros inconvénients. Vous savez où il se trouve, il est stocké séparément, ce qui facilite le déploiement sur plusieurs machines si elles ont toutes besoin de valeurs de configuration différentes (puisqu'il ne fait pas partie du WAR).
La seule autre solution à laquelle je pense et qui fonctionnerait bien serait de garder tout dans la BD sauf les informations de connexion à la BD. Cela viendrait des propriétés du système Java qui sont récupérées par la JVM. C'est l'API des préférences mentionnée par Hans Doggen ci-dessus. Je ne pense pas qu'elle existait lorsque notre application a été développée, et si elle existait, elle n'a pas été utilisée.
Quant au chemin d'accès au fichier de configuration, il s'agit simplement d'un fichier dans le système de fichiers. Vous n'avez pas besoin de vous préoccuper du chemin d'accès web. Ainsi, lorsque votre servlet démarre, il lui suffit d'ouvrir le fichier "/config/monapp/config.xml" (ou autre) et il trouvera ce qu'il faut. Le fait de coder en dur le chemin d'accès me semble plutôt inoffensif.