Was wir tun ist es in ein separates Verzeichnis auf dem Server zu legen (Sie könnten etwas wie/config,/opt/config,/root/config,/home/username/config, oder was auch immer Sie wollen). Wenn unsere Servlets starten, lesen sie die XML-Datei, holen ein paar Dinge heraus (vor allem DB-Verbindungsinformationen), und das war's.
Ich fragte nach, warum wir das einmal gemacht haben.
Es wäre nett, alles in der DB zu speichern, aber offensichtlich können Sie DB-Verbindungsinformationen in der DB nicht speichern.
Sie könnten Dinge im Code fest codieren, aber das ist aus vielen Gründen hässlich. Wenn sich die Informationen jemals ändern müssen, müssen Sie den Code neu erstellen und erneut bereitstellen. Wenn jemand eine Kopie Ihres Codes oder Ihrer WAR-Datei erhält, erhält er diese Informationen.
Die Dinge in die WAR-Datei scheinen nett, aber wenn Sie die Dinge viel ändern möchten, könnte es eine schlechte Idee sein. Das Problem ist, dass, wenn Sie die Informationen ändern müssen, das nächste Mal, wenn Sie es erneut überschreiben, die Datei überschreiben wird, sodass alles vergessen wird, was Sie nicht daran erinnerten, es in der Version zu ändern.
Die Datei an einem speziellen Ort auf der Dateisystem-Sache funktioniert ganz gut für uns. Es hat keine großen Nachteile. Sie wissen, wo es ist, es ist separat gespeichert, macht die Bereitstellung auf mehreren Maschinen einfach, wenn sie alle unterschiedliche Konfigurationswerte benötigen (da sie nicht Teil der WAR sind).
Die einzige andere Lösung, die ich mir vorstellen könnte, würde gut funktionieren, würde alles in der DB außer den DB-Login-Informationen zu halten. Dies würde von Java-Systemeigenschaften stammen, die über die JVM abgerufen werden. Dies ist die Preferences-API-Sache, die oben von Hans Doggen erwähnt wurde. Ich glaube nicht, dass es war, als unsere Anwendung zum ersten Mal entwickelt wurde, wenn es nicht verwendet wurde.
Wie für den Pfad für den Zugriff auf die Konfigurationsdatei ist es nur eine Datei im Dateisystem. Sie müssen sich nicht um den Webpfad kümmern. Wenn Ihr Servlet startet, öffnet es einfach die Datei unter "/config/myapp/config.xml" (oder was auch immer) und es wird das Richtige finden. Den Pfad für diesen hier zu programmieren, scheint mir ziemlich harmlos zu sein.
Beachten Sie, dass es keinen Standardmechanismus für Servlet-Engines gibt - Sie müssen herstellerspezifische Annahmen treffen. –