Java: der Zugriff auf die properties-Datei innerhalb eines Krieges
Ich schon gesucht StackOverflow für "Eigenschaften" inneren Krieg", aber keines der Ergebnisse gearbeitet für meinen Fall.
Ich bin mit Eclipse Galileo und GlassFish v3 auf die Entwicklung einer Reihe von web-services. Ich bin mit einem "dynamic web project" mit der folgenden Struktur
Src
-java_code_pkg_1
-java_code_pkg_2
-com.company.config
--configfile.properties WebContent
-META-INF
-WEB-INF
--log4jProperties
--web.xml
--applicationContext.xml
--app-servlet.xml
Möchte ich den Zugriff auf die "configfile.Eigenschaften" in einer der Quell-Dateien in "java_code_pkg1". Ich bin mit dem Spring-Framework und diese Datei wird einmal instanziiert die Anwendung startet auf dem server.
Ich habe Folgendes versucht, ohne Glück
getResourceAsStream("/com.company.config/configfile.properties");
getResourceAsStream("/com/company/config/configfile.properties");
getResourceAsStream("com/company/config/configfile.properties");
getResourceAsStream("/configfile.properties");
getResourceAsStream("configfile.properties");
getResourceBundle(..) didn't work either.
Ist es möglich, auf eine Datei zuzugreifen, wenn es nicht unter WEB-INF/classes " - Pfad? wenn ja, dann wie?
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
funktioniert, wenn ich in den debug-Modus. Ich kann sehen, wie die Werte im debugger, aber ich bekomme eine NullPointerException direkt nach der Ausführung des "props.laden Sie" Linie und bevor er in das Licht darunter.
Das ist ein anderes Thema. Zumindest jetzt weiß ich, dies ist der Weg, um den Zugriff auf die config Datei.
Danke für Eure Hilfe.
Wenn Sie in einem Krieg, der classpath "aktuelle Verzeichnis" ist "WEB-INF/classes". Gehen Sie einfach zwei Ebenen.
Es ist schrecklich, aber es funktioniert. Zumindest funktioniert es unter tomcat, jboss und geronimo und Es funktioniert heute.
P. S. Ihr Verzeichnis-Struktur ist nicht ganz klar. Vielleicht ist es:
Überprüfen Sie den Speicherort der properties-Datei in eine war-Datei.
Wenn es in WEB-INF/classes-Verzeichnis unter com/Unternehmen/config-Verzeichnis
getResourceAsStream("com/company/config/configfile.properties")
sollte funktionierenoder getResourceAsStream(" Das soll funktionieren, wenn die config-Datei nicht unter WEB-INF/classes Verzeichnis
Versuchen auch mit getClass().getClassLoader().getResourceAsStream.
Sind Sie sicher, dass die Datei in Ihrer war-Datei? Eine Menge Zeit, den Krieg build-Prozess wird der filter nicht .class-Dateien.
Was ist der Weg, sobald es auf dem server bereitgestellt? Es ist möglich den Scanner verwenden, um manuell Lesen Sie in der Ressource. Aus einer java-Datei in einem Paket, erstellen Sie eine neue Datei("../Programme/") erhalten Sie eine Datei zeigte auf {glassfish-Installation}\domains\{domain-name}\ - Anwendungen. Vielleicht könnten Sie das ändern der Datei-Pfad, Sie zu leiten, wo Sie gehen müssen?
Da man sich mit Frühling, dann verwenden Sie die Ressource-Unterstützung in Spring injizieren Sie die properties-Dateien direkt.
sehen http://static.springsource.org/spring/docs/3.0.x/reference/resources.html
Selbst wenn die Klasse, die erfordert, dass die properties-Datei ist nicht Spring verwaltet werden, können Sie immer noch Zugriff auf die Datei ApplicationContext und es verwenden, um das laden der Ressource
Ressource wäre so etwas wie, classpath:Einstellungen.Eigenschaften, vorausgesetzt, dass Ihre properties-Datei wurden abgeholt, die von Ihr zu bauen, und ging in der war-Datei.
Können Sie auch injizieren direkt aus den docs: