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...

0voto

cletus Punkte 596503

+1 für das Setzen es in Ihrem Klassenpfad.

Wenn Sie Spring verwenden (und ich empfehle Ihnen, dies zu tun, wenn Sie es nicht bereits aus vielen Gründen tun), können Sie eine Eigenschaftsdatei wie diese laden:

database.username=scott
database.password=tiger

und fügen Sie Verweise in Ihren Anwendungskontext ein wie:

<property name="username" value="${database.username}"/>

(vorausgesetzt, Sie haben den Eigenschaftskonfigurator konfiguriert) und es wird ein Fehler auftreten, wenn die Datei nicht geladen werden kann oder die Eigenschaft nicht existiert. Die Anwendung kann dann nicht gestartet werden. Das ist eigentlich eine gute Sache. So können Sie Probleme wirklich schnell finden, und das ist viel besser als ein stiller Fehlschlag, der manchmal katastrophale Auswirkungen haben kann.

0voto

mssb Punkte 878

Kopieren Sie Ihre Eigenschaftsdatei in den Pfad web/WEB-INF/classes

Properties p=new Properties();
p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("myproperty.properties"));

0voto

thommy Punkte 63

Beachten Sie, dass Sie Folgendes tun müssen den InputStream schließen . Andernfalls werden Sie früher oder später eine SocketException erhalten.

#|2013-xx-xxTxx:xx:xx.162+0200|WARNING|sun-appserver2.1|sun.rmi.transport.tcp|_ThreadID=431; _ThreadName=RMI TCP Accept-0;_RequestID=xyz;|RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=42384] throws
java.net.SocketException: Too many open files
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
    at java.net.ServerSocket.implAccept(ServerSocket.java:453)
    at java.net.ServerSocket.accept(ServerSocket.java:421)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
    at java.lang.Thread.run(Thread.java:662)
|#]

Eigenschaften laden

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