Hallo Zusammen,
ich nutze das Singleton Pattern um eine Properties-Datei auszulesen und die Werte überall zur Verfügung zu stellen.
Gekürzt sieht das dann etwa so aus:
Configuration.getInstance().getProperty("Test") funktioniert nun.
Problem an der ganzen Sache ist aber, dass die Property-Datei im laufenden Betrieb geändert werden kann und sich das Programm damit anders verhalten soll.
Von dem Programm exisitieren mehrere Instanzen, die jeweils auf die gleiche Property-Datei zugreifen und sich auch alle gleich verhalten sollen.
Funktioniert auch wunderbar, nur leider wirken sich Änderungen in der Property-Datei im laufenden Betrieb nicht aus, da ja schon eine Configuration-Instanz exisitiert.
Wie könnte ich das Problem lösen? Eine Methode schreiben, die Änderungen an der Property-Datei feststellt und entscheidet, ob eine neue Singleton-Instanz erzeugt wird? Wie mache ich dann das Ganze Thead-Sicher?
Oder kann ich die Configurations-Klasse um folgende Methode erweitern:
und nach jeder erfolgreichem Programmdurchlauf (es wird nur eine bestimmte Transaktion ausgeführt) das Singleton mit Configuration.deleteInstance(); löschen?
Grüße
ich nutze das Singleton Pattern um eine Properties-Datei auszulesen und die Werte überall zur Verfügung zu stellen.
Gekürzt sieht das dann etwa so aus:
Java:
public class Configuration {
private static ConfigurationHelper instance = null;
public static ConfigurationHelper getInstance() throws IOException {
if(instance == null) {
instance = new ConfigurationHelper();
}
return instance;
}
private Configuration() {
}
}
public class ConfigurationHelper {
Properties properties = null;
public ConfigurationHelper() {
this.loadConfig();
}
private void loadConfig() {
properties = new Properties();
//...Schnipp Schnapp
// [...]
InputStream stream;
try {
stream = new FileInputStream(new File(configPath));
properties.load(stream);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getProperty(String name) {
return properties.getProperty(name);
}
Configuration.getInstance().getProperty("Test") funktioniert nun.
Problem an der ganzen Sache ist aber, dass die Property-Datei im laufenden Betrieb geändert werden kann und sich das Programm damit anders verhalten soll.
Von dem Programm exisitieren mehrere Instanzen, die jeweils auf die gleiche Property-Datei zugreifen und sich auch alle gleich verhalten sollen.
Funktioniert auch wunderbar, nur leider wirken sich Änderungen in der Property-Datei im laufenden Betrieb nicht aus, da ja schon eine Configuration-Instanz exisitiert.
Wie könnte ich das Problem lösen? Eine Methode schreiben, die Änderungen an der Property-Datei feststellt und entscheidet, ob eine neue Singleton-Instanz erzeugt wird? Wie mache ich dann das Ganze Thead-Sicher?
Oder kann ich die Configurations-Klasse um folgende Methode erweitern:
Java:
public static void deleteInstance() {
instance = null;
}
und nach jeder erfolgreichem Programmdurchlauf (es wird nur eine bestimmte Transaktion ausgeführt) das Singleton mit Configuration.deleteInstance(); löschen?
Grüße