10 Stimmen

Wie man eine Eigenschaftsdatei mit GlassFish verwendet

Ich erstelle einen Webdienst, der in GlassFish ausgeführt wird, und ich möchte einige benutzerdefinierte Eigenschaften haben. Hierfür verwende ich die Properties Klasse. Der Code, den ich verwende, lautet:

Properties p=new Properties();
File f=new File(System.getProperty("user.dir"), "settings.properties");
p.load(new FileInputStream(f));  

Aber wie bekomme ich die settings.properties -Datei in meinem Konfigurationsverzeichnis?

Ich bin mir bei meinem Klassenpfad nicht sicher, da dieser von NetBeans und GlassFish verwaltet wird. Ich nehme an, dass mein .war -Datei zum Klassenpfad hinzugefügt wird, wenn die Bereitstellung...

Ich habe meine eigene Lösung hinzugefügt, aber wenn jemand eine bessere Lösung finden könnte, wäre das sehr willkommen...

11voto

Brent Clay Punkte 483

Legen Sie Ihre Eigenschaftsdateien in der <glassfish-install-dir>/glassfish/domains/<domain-name>/lib/classes Verzeichnis und sind von Ihren Anwendungen aus über die ResourceBundle Klasse. Fügen Sie zum Beispiel eine Eigenschaftsdatei mit dem Namen einstellungen.eigenschaften in dieses Verzeichnis und greifen Sie dann wie folgt auf die Werte in der Datei zu:

ResourceBundle.getBundle("settings").getString("my-property-key");

5voto

doekman Punkte 18062

Die Lösung, die funktioniert, ist eigentlich ziemlich einfach:

URL url =  this.getClass().getResource("/package/name/file.properties");
p = new Properties();
p.load(new FileInputStream(new File(url.getFile())));

Warum ist niemand damit gekommen?

3voto

fredarin Punkte 784

Alternativen:

Je nachdem, wie Ihre Domäne konfiguriert ist, können Sie unter Umständen asadmin create-system-properties über die Befehlszeile. Ausführen/sehen asadmin create-system-properties --help für weitere Informationen.

Oder Sie möchten die Systemeigenschaften über die Glassfish-Verwaltungsoberfläche verwalten. Hier ist der Standard-Link: http://localhost:4848/configuration/systemProperties.jsf?configName=server-config

1voto

kgiannakakis Punkte 100768

Siehe aquí wie Sie eine Eigenschaftsdatei aus Ihrem Klassenpfad lesen können:

URL url =  ClassLoader.getSystemResource("test.properties");
Properties p = new Properties();
p.load(new FileInputStream(new File(url.getFile())));

Sie müssen dann nur noch Ihr Konfigurationsverzeichnis zum Klassenpfad hinzufügen.

Wenn Sie Probleme bei der Verwendung des obigen Codes haben, versuchen Sie ServletContext.getResource .

1voto

doekman Punkte 18062

Ich habe viel ausprobiert, aber ich habe das Problem mit gelöst:

        // ServletContext ctx
        InputStream stream = ctx.getResourceAsStream("version.properties");
        p = new Properties();
        p.load(stream);

Ich muss den ServletContext von einer jsp-Seite mit einem Aufruf von getServletContext()getServletContext() . Nicht ideal, aber es ist der einzige Weg, wie ich es zum Laufen bringen konnte...

Es wäre jedoch schön, wenn jemand eine andere Lösung vorschlagen könnte, die ohne die ServletContext .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X