Änderung an Proberties datei an alle User weitergeben?

Status
Nicht offen für weitere Antworten.

schuetzejanett

Bekanntes Mitglied
Hallo,

ich habe eine Datei in der Programmeinstellungen und auch Listeneinträge(Häufig benutzte Werte, eingestellte Drucker usw) gespeichert sind.
Diese Datei kann in einem Dialg geändert werden.Ändert sich die Datei regiert ein Listener und führt Änderungen durch z.B werden die komboboxen, welche Listeneinträge erhalten angepasst. das funktioniert auch prima.

Nur habe ich das Problem das das Programm ein Multi-User-Programm werden soll. Das heißt wenn ein User die Datei ändert sollen alle anderen die Änderung mitbekommen. Sie greifen alle auf die selbe Proberties Datei zu. Welche Möglichkieten gibt es dafür?

Falls das zur Lösung beiträgt das Programm ist ein Eclipse RCP und die Dateiverwaltung + Änderung + benachrichtigung funktioniert derzeit mit einem PreferenceStore + preferencepages + IPropertyChangeListener.

Würde mich aber auch über ganz allgemeine Hinweise und Tipps freuen. Welche nicht den plugin Mechanismus von Eclipse betreffen.
 

byte

Top Contributor
Hast Du die Lösung nicht schon selbst genannt? Wenn Du die Programmeinstellungen über einen PreferenceStore persistent hälst und alle Clients auf der selben Datei arbeiten, kannst Du sie doch über Änderungen benachrichtigen lassen.
 

schuetzejanett

Bekanntes Mitglied
ja das habe ich ja eben auch gedacht. Aber leider reagieren die anderen nicht auf die anderen. Wesegen ich halt vermutet habe, der Listener springt nur in dem programm an, in dem ich die Datei ändere. In allen anderen Programmen oder besser gesagt bei allen anderen nutzern passiert nix.

Hier mal Ausschnitte aus meinem Quellcode.

Der Activator

Code:
PreferenceStore prefStor;

	@Override
	public IPreferenceStore getPreferenceStore()
	{
		if (prefStor == null)
		{			
			String filename = "C:\\DM\\preferences.properties";
			prefStor = new PreferenceStore(filename);
			try
			{
				prefStor.load();
			} catch (Exception e)
			{}			
		}
		return prefStor;
	}

Die preference Page



Code:
 public class PreferencePagePostage extends FieldEditorPreferencePage
{

	private StringListFieldEditor listeditor;

	public PreferencePagePostage()
	{
		super(GRID);
		setTitle("Porto");
		setPreferenceStore(Activator.getDefault().getPreferenceStore());
	}

	@Override
	protected void createFieldEditors()
	{
		listeditor = new StringListFieldEditor("PORTO", "Portowerte:",
				getFieldEditorParent());		
		addField(listeditor);
	}

	@Override
	public boolean performOk()
	{
		listeditor.store();
		return super.performOk();
	}

}

und eine Klasse welche auf änderungen wartet und diese verarbeitet.

Code:
private IPropertyChangeListener postageListener = new IPropertyChangeListener()
	{

		@Override
		public void propertyChange(PropertyChangeEvent event)
		{
			if (event.getProperty() == "PORTO")
			{
				fillCombo();
			}
		}
	};

	public ComComboPostage(Composite parent)
	{
		super(parent, SWT.NONE);
		initialze();
		Activator.getDefault().getPreferenceStore().addPropertyChangeListener(
				postageListener);
	}

Habe ich irgendwo was vergessen, oder muss was anders machen? Oder ist ein Fehler drin?
 

byte

Top Contributor
Hm, dann scheinen die PropertyChangeListener wohl nicht auf Veränderungen der Datei zu horchen sondern es ist einfach eine ganz normale OO-Listener-Umsetzung. Schade. ;)

Keine Ahnung, obs dafür vorgefertigte Lösungskonzepte gibt. Ansonsten könntest Du es sicherlich mit RMI lösen. Wobei ich keine Ahnung habe, wie gut sich Listener und RMI vertragen, aber prinzipiell sollte es funktionieren.
 

schuetzejanett

Bekanntes Mitglied
Die Datei liegt auf einem Netzlaufwerk in dem programmordner wo auch die xe ligt, Das heißt alle nutzer greifen genau auf die gleiche datei zu. Brauch man da wirklich RMI oder geht das auch anders.

Könnte ja auch bei jedem zugriff auf ein relevantes Feld den prefstore neu laden und auf änderungen prüfen. Oder ist das kein gutes handling oder bei Start lastmodified der datei speichern und dann bei zugriff wieder nachschauen, wenn größer dann laden oder so was in der Art?

Oder ist das schlechte Programmierweise?
 

byte

Top Contributor
Geht sicher auch ohne RMI. Du müsstest in einem Thread auf Dateiänderungen der Property-Datei horchen und dann ein PropertyChangeEvent abfeuern.
 

schuetzejanett

Bekanntes Mitglied
Also bim programmstart im activator einen thread starten der dann aller paar sekunden guckt ob sich die datei geändert hat(last modified)
Oder mgeht das anders, oder muss woanders hin?
 

thomator

Bekanntes Mitglied
Klar, das geht nur so. Die Applikationen laufen ja in verschiedenen VMs, da können sie nicht so ohne weiteres miteinander reden, es sei denn, Du verwendest ein Messaging-System, das eine Ebene über den Applications tickert. Dafür gibts ja auch einen Standard, das JMS. Allerdings sicher aufwändiger, als ein Thread, der die Änderungen an der Datei überwacht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
H Änderung im maximalen heap space unter Windows 7 ?! Allgemeine Java-Themen 5
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
S Änderung in einer Datei Allgemeine Java-Themen 7
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
Iron Monkey JNLP nach Änderung automatisch aktualisieren Allgemeine Java-Themen 18
G Änderung eines primitiven Datentyps löst Fehler aus Allgemeine Java-Themen 7
N Änderung des Objektnamens Allgemeine Java-Themen 3
M jdesktop binding: jTable update nach Änderung... Allgemeine Java-Themen 3
M MVC - Info an Änderung des Models Allgemeine Java-Themen 8
T Eingebettes Objekt über Änderung d. äußeren Obj. informieren Allgemeine Java-Themen 4
J Nach SOAP Protokollierungen Änderung vornehmbar? Allgemeine Java-Themen 2
E Listener für Änderung der Fenstergröße Allgemeine Java-Themen 3
W Listener an ein beliebiges Objekt hänger, der mir Änderung Allgemeine Java-Themen 8
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Jar-Datei ausführen Allgemeine Java-Themen 7
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
C Wav-Datei aus Jar laden? Allgemeine Java-Themen 11
L Best Practice Zip Datei aktualisieren Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
Hatsi09 Jar datei ausführen verursacht NumberFormatException Allgemeine Java-Themen 9
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
N Txt Datei auslesen. Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
J Fehlermeldung bei Ausführung von .jar-Datei Allgemeine Java-Themen 9
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
M Probleme jar datei. Allgemeine Java-Themen 2
F Datei in String-Array einlesen Allgemeine Java-Themen 8
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
D ODS.Datei öffnet leider in Excel Allgemeine Java-Themen 3
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
L SQL Datei in Eclipse erstellen Allgemeine Java-Themen 3
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
G Workupload datei mit Java Downloaden Allgemeine Java-Themen 6
H .jar Datei startet nicht richtig bei Doppelklick Allgemeine Java-Themen 11
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
M Java Eclipse- Datei exportieren Allgemeine Java-Themen 5
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
T Jar Datei nicht ausführbar Allgemeine Java-Themen 6
H jar-Datei mit java.exe anstatt mit javaw.exe ausführen Allgemeine Java-Themen 9
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0

Ähnliche Java Themen

Neue Themen


Oben