Java: Zugriff auf die Eigenschaftendatei in einem Krieg

8

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

    
del.ave 20.07.2010, 15:06
quelle

6 Antworten

7
%Vor%

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.

    
del.ave 20.07.2010, 16:03
quelle
7

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%     
andcoz 20.07.2010 15:41
quelle
2

Ü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

ist

Versuchen Sie es auch mit getClass (). getClassLoader (). getResourceAsStream.

    
Rajendra 16.06.2011 17:43
quelle
1

Sind Sie sicher, dass die Datei in Ihrer WAR-Datei enthalten ist? Der War-Build-Prozess filtert häufig nicht-.class-Dateien heraus.

    
corsiKa 20.07.2010 15:15
quelle
0

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?

    
Dorrene Brown 20.07.2010 15:50
quelle
0

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%     
Al Baker 20.06.2011 01:09
quelle

Tags und Links