Ich verwende Tomcat 5.5 als meinen Servlet-Container. Meine Webanwendung wird über .jar bereitgestellt und enthält einige Ressourcendateien (Textdateien mit Zeichenfolgen und Konfigurationsparametern), die sich unter dem Verzeichnis WEB-INF befinden. Tomcat 5.5 läuft unter ubuntu linux. Die Ressourcendatei wird mit einem Dateireader gelesen:
fr = new FileReader("messages.properties");
Das Problem ist, dass das Servlet manchmal die Ressourcendatei nicht finden kann, aber wenn ich es ein paar Mal neu starte, funktioniert es, und nach einiger Zeit hört es wieder auf zu arbeiten. Kann jemand vorschlagen, wie Ressourcen-Strings am besten aus einem Servlet gelesen werden können? Oder ein Workaround für dieses Problem? Das Einfügen der Ressourcendateien unter WEB-INF / classes hilft auch nicht.
Ich vermute, dass Sie versuchen, einen relativen Pfad für den Zugriff auf die Datei zu verwenden. Der absolute Pfad sollte helfen (z. B. "/home/tomcat5/properties/messages.properties").
Die übliche Lösung für dieses Problem besteht jedoch in der Verwendung der getResourceAsStream-Methode des ClassLoaders. Wenn Sie die Eigenschaftendatei auf "WEB-INF / classes" anwenden, wird sie für den Klassenlader verfügbar und Sie können auf den Eigenschaftsdatenstrom zugreifen.
Nicht getesteter Proto-Code:
%Vor%Wenn Sie versuchen, über eine Servlet-fähige Klasse wie einen ContextListener oder einen anderen Lifecycle-Listener auf diese Datei zuzugreifen, können Sie das ServletContext-Objekt verwenden, um den Pfad zu einer Ressource abzurufen.
Diese drei sind ungefähr gleichwertig. (Verwechseln Sie getResourceAsStream nicht mit dem, das von der ClassLoader
-Klasse bereitgestellt wird. Sie verhalten sich sehr unterschiedlich)
Ich verwende den folgenden Code, um eine Eigenschaftendatei von einem Servlet zu laden:
%Vor%Dies funktioniert mit Tomcat 6.0
Ich habe für Jboss Seam verwendet:
ServletLifecycle.getServletContext().getRealPath("")