Werte aus der .properties-Datei zur Laufzeit auslesen

rosmi

Mitglied
In der Webanwendung werden einige Werte in .properties-Datei gehalten. Wenn die Anwendung

gestartet wird, werden die Werte ausgelesen, die auch in der .properties-Datei stehen. Werden

aber zur Laufzeit Werte verändert, so ändern sich zwar die Werte in der .properties-Datei, beim

Versuch diese Werte wieder aus der Datei auszulesen, erhalte ich immer noch die alte Werte (also

die beim Starten der Anwendnug aktuell waren, und nicht die, die jetzt in der Datei sind).



Warum ist das so? Was kann man "dagegen" tun?







Hier ist die Klasse zum Speichern/Auslesen:


/*
* Created on 17.06.2004
*/

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;


public class ResourceUtils {

private String uri;

/**
* @param uri Name der .property datei im Klassenpfad
* z.B. /de/beispiel/Source.properties
*/
public ResourceUtils(String uri) {
this.uri = uri;
}

public String getProperty(String key) {
String value = null;
Properties prop = new Properties();
try {
prop.load(getClass().getResourceAsStream(this.uri));
value = prop.getProperty(key);
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println("=============== key="+key+", value="+value);
return value;
}

/**
* Setzt den Wert der Eigenschaft <code>key</code> auf <code>value</code>.
*
* @param key Name der Eigenschaft
* @param value Neuer Wert der Eigenschaft <code>name</code>
* @return
*/
public boolean saveProperty(String key, String value) {
Properties prop = new Properties();
try {
InputStream in = getClass().getResourceAsStream(this.uri);


prop.load(in);
prop.setProperty(key, value);
URL url = getClass().getResource(this.uri);
File file = new File(url.getFile());
BufferedOutputStream bos = new BufferedOutputStream(new

FileOutputStream(file));
prop.store(bos, "header");
return true;
}
catch (IOException e) {
e.printStackTrace();
return false;
}
}

}
 
Lösung

Die Klasse ResourceUtils als Singleton - und die gespeicherte Werte werden ausgelesen, ohne webapp neu starten zu müssen
 
Hallo

Ich bin noch neu in dem Thema und versuche auch gerade mit der Klasse eine properties-Datei auszulesen, leider musste ich feststellen, dass ich keine Ahnung habe wo ich die Datei hinstellen muss im Projektfile damit ich die mit dem folgen Befehl auslesen kann.

p.ResourceUtils("/sprache.properties");

Mein Projekt-Ordner heißt Login, dann hab ich noch ein package ejb in dem alle Source-Files liegen und einen META-INF-Ornder.

Von welchem Ausgangspunkt geht denn die Methode aus?
 

Neue Beiträge

Zurück