2010-11-22 4 views
3

Ich habe Web-Anwendung mit Konfigurationsdateien in \WEB-INF\etc\config. Dieser Ordner enthält einige Eigenschaftendateien und ein XML. Ich muss den Pfad zu XML in einer Eigenschaftendatei einrichten. Nach der Einrichtung, die diese Datei verwendet, um ein Objekt beim Start des Dienstes zu erstellen, liest dieses Objekt die Eigenschaften aus der Datei. Daher muss dieses Objekt den Pfad zu allen Dateien kennen, der in der Eigenschaftendatei beschrieben wurde. Wie kann ich den richtigen Pfad in der Eigenschaftendatei beschreiben, wenn die Eigenschaftendatei und die XML-Datei im selben Verzeichnis liegen?WEB-INF Pfad für Dateien

Danke.

Antwort

5

Die übliche Vorgehensweise besteht darin, diese Dateien in den Klassenpfad der Laufzeit einzufügen oder ihren Stammpfad dem Klassenpfad der Laufzeit hinzuzufügen. Dann können Sie die Ressource von ClassLoader#getResource() oder als InputStream von ClassLoader#getResourceAsStream() erhalten.

Alles, was Sie in der Eigenschaftendatei angeben müssen, wäre dann der vollständig qualifizierte Name (der Klassenpfad) der XML-Datei.

Wenn Sie wirklich darauf bestehen, mit Plattendateisystempfade wie in Hantieren, dann müssen Sie Pfade relativ von der Web-Inhalte angeben (der Ordner bei /WEB-INF befindet) und verwenden Sie dann ServletContext#getResource() oder ServletContext#getResourceAsStream() die Ressource zu erhalten. Dies fügt jedoch eine ServletContext Abhängigkeit von Ihrem Code mithilfe der XML-Datei hinzu.

+0

Danke, ich verstehe, was Sie geschrieben haben, und meine Lösungen sind: – jitm

+0

Fügen Sie in Konflikt Pfad und Parse in der Laufzeit mit ServletContext und zweite Lösung ist in der Eigenschaft Datei vollständigen Pfad von Start-Stammordner zu XML-Datei hinzufügen. Ich habe die zweite Variante gewählt. Vielen Dank. – jitm

Verwandte Themen