Ich habe StackOverflow bereits nach "Eigenschaften im Krieg" durchsucht, aber keines der Ergebnisse funktionierte für meinen Fall.
Ich verwende Eclipse Galileo und GlassFish v3, um eine Reihe von Webdiensten zu entwickeln. Ich verwende ein "dynamisches Webprojekt" mit der folgenden Struktur
%Vor%Ich möchte auf die "configfile.properties" in einer der Quelldateien in "java_code_pkg1" zugreifen. Ich verwende das Spring Framework und diese Datei wird instanziiert, sobald die Anwendung auf dem Server gestartet wird.
Ich habe folgendes ohne Glück versucht
%Vor%Ist es möglich, auf eine Datei zuzugreifen, wenn sie nicht unter dem Pfad WEB-INF / classes liegt? Wenn ja, wie?
Danke
funktioniert, wenn ich im Debug-Modus bin. Ich kann die Werte im Debugger sehen, aber ich bekomme eine NullPointerException direkt nach dem Ausführen der Zeile "props.load" und bevor ich in das Licht darunter gehe.
Das ist ein anderes Thema. Zumindest weiß ich jetzt, dass dies der Weg ist, um auf die Konfigurationsdatei zuzugreifen.
Danke für Ihre Hilfe.
Wenn Sie sich in einem Krieg befinden, ist Ihr Klassenpfad "aktuelles Verzeichnis" "WEB-INF / classes". Gehe einfach zwei Stufen hoch.
%Vor%Es ist schrecklich, aber es funktioniert. Zumindest funktioniert es unter tomcat, jboss und geronimo und es funktioniert heute .
P.S. Ihre Verzeichnisstruktur ist nicht sehr klar. Vielleicht ist es:
%Vor% Überprüfen Sie den Speicherort der Eigenschaftendatei in der WAR-Datei.
Wenn es sich im Verzeichnis WEB-INF / classes im Verzeichnis com / company / config befindet
getResourceAsStream("com/company/config/configfile.properties")
sollte funktionieren
oder getResourceAsStream ("Das sollte funktionieren, wenn die Konfigurationsdatei nicht unter WEB-INF / classes directoy
Versuchen Sie es auch mit getClass (). getClassLoader (). getResourceAsStream.
Was ist der Pfad, nachdem er auf dem Server bereitgestellt wurde? Es ist möglich, den Scanner zum manuellen Einlesen der Ressource zu verwenden. Aus einer Java-Datei innerhalb eines Pakets erhalten Sie durch Erstellen einer neuen Datei ("../ applications /") eine Datei mit dem Namen {glassfish install} \ domains \ {domain name} \ applications. Vielleicht könnten Sie diesen Dateipfad ändern, um Sie dorthin zu bringen, wohin Sie gehen müssen?
Da Sie Spring verwenden, verwenden Sie die Ressourcenunterstützung in Spring, um die Eigenschaftendateien direkt zu injizieren.
siehe Ссылка
Auch wenn die Klasse, für die die Eigenschaftendatei erforderlich ist, nicht von Spring verwaltet wird, können Sie weiterhin auf den ApplicationContext zugreifen und ihn zum Laden der Ressource verwenden
resource wäre etwas wie classpath: settings.properties, vorausgesetzt, dass Ihre Eigenschaftendatei von Ihrem Build übernommen und in der WAR-Datei abgelegt wurde.
Sie können auch direkt aus der Dokumentation injizieren:
%Vor%Tags und Links configuration java war properties