Ich habe eine Webapplikation die in einem Tomcat Server läuft. Diese Applikation benutzt an verschiedenen Stellen relative Pfade zu bestimmten Dateien
...new File("einOrdner/eineDatei.txt");
In meiner Test/Entwicklungsumgebung läuft alles supie, aber ich habe diese Webapplikation auf einem anderen Server deployed und da läuft sie nicht mehr…weil:
bei relative Pfade wird nicht wie in der Entwicklungsumgebung
/ichBinAußerhalb/TomcatInstallationsRoot/
angehangen sondern
/ichBinAußerhalb/TomcatInstallationsRoot/temp/
meine erste Idee war:
URL url = FileContext.class.getResource("../../../../../../");
if(url == null)
{
throw new IOException("Root konnte nicht gefunden werden");
}
String rootPath = url.getPath();
Ich bin von Ordner der Klasse aus in Richtung WEB-INF „gewandert“ und das Ergebnis sollte eigentlich der Pfad zum WEB-INF Ordner sein. Hat aber nicht funktioniert…
Dann bin ich Schrittweise gegangen und das Ergebnis ist etwas merkwürdig…bei 4 x „…/“ war ich im Lib-Ordner des Tomcats?!? bei 6 x „…/“ war ich im plötzlich in einem Unterordner von Tomcats Temp Ordner. Ich verstehe das nicht. Wie soll das gehen, ich sage gehe zwei Schritte in Richtung Root (von 4x auf 6x) und er macht 3 Schritte weg von der Root. Warum liefert nur 4x bzw. 6x „…/“ ein Ergebnis?
Gibt es irgend eine Möglichkeit wie ich das Problem lösen kann? Vielleicht durch anpassen der Tomcat Konfiguration? Kann mir jemand sagen wie ich die Sache mit den getResources() richtigt gemache?
PS:
Die Sache mit dem ServletContext (was ich ständig gelesen habe) geht nicht. Da die betroffenen Klassen keine Servlets sind und keine „Verbindung“ zu Servlets haben. Denn es ist ein „normales“ JavaSE Projekt das in einem großen Tomcat-Projekt „eingebaut“ ist (automatisches Build von SVN). Das Projekt wird auch nicht als JAR eingefügt sondern die Klassen werden compiliert und unter WEB-INF/classes/… gepackt.
Das gleiche passiert auch mit den Logdateien der Applikation, die landen nicht in
/ichBinAußerhalb/TomcatInstallationsRoot/webapps/Application/WEB-INF/ressourcen/log/\*.xml
sondern in
/ichBinAußerhalb/TomcatInstallationsRoot/temp/IrgendeinZufallsOrdnerVomEntpacken/webapps/Application/WEB-INF/ressourcen/log/\*.xml