Infos aus mehreren JVMS verbinden

Stinner

Mitglied
Hallo,
Titel passt ggfs. nicht ganz. Folgendes Problem:

Ich habe mein Programm auf einem Netzlaufwerk, mit einer embedded DB. Diese kann immer nur
in einer JVM geöffnet sein und wirft eine Fehlermeldugn, wenn man versucht sie 2 mal zu öffnen.

Da das Programm von mehreren Leuten geöffnet werden kann, würde ich gerne eine Meldung der ARt bringen:
DB kann nicht geöffnet werden, Herr XY nutzt sie gerade. Dafür würde ich gerne die User.name System-Property auslesen.

Mein Problem ist, wie oder wo speicher ich den Wert, damit ich aus der anderen JVM darauf zugreifen kann?

Gruß, Felix
 
Verzichte auf die embbedded- DB und nimm eine richtige. Dann koennen zwei Leute gleichzeitig auf die Daten zugreifen. Das ist doch der Sinn von Datenbanken auf einem Server, oder?

Falls du wirklich diese Funktion brauchst, sehe ich drei Moeglichkeiten:

1) Ueber Runtime.exec den Kommandozeilen- Befehl zum setzen einer Enviroment- Variable benutzen. Problem: 1) Betriebssystemabhaengig 2) eventuell geht das nicht. Dann naemlich, wenn das Betriebssystem der einen VM nicht erlaubt, auf Env.- Vars. der Anderen zuzugreifen. Koennte z.B. unter Linux auftreten, wenn beide von unterschiedlichen Nutzern gestartet wurden.
2) Einen Textfile auf der Festplatte ablegen, wo der Name drin steht. Beim Beenden der VM das Loeschen nicht vergessen. Der File koennte gleichzeitig als Anzeige, ob die DB geoeffnet ist, dienen.
3) Ueber RMI die fremde VM fragen, was sie gerade so treibt. 1 und 2 sind einfacher, dieser ist elegant und ermoeglicht dir ohne großen (Mehr- )Aufwand spaeter auch nach anderen Dingen zu fragen.
 
Hallo,
ja brauche die Funktion.

Das mit der Textfile sehe ich auch als einfachste Möglichkeit. Kann es da aber nicht zu Probleme wegen dem Schreibprozess kommen?
Hatte nämlich auch mal gedacht, den zugriff über eine Datei zu steuern? was ist aber, wenn zwei fast gleichzeitig die DB öffnen und was ist, wenn der eine liest während der andere schreibt etc.?
 
Hallo,
ja brauche die Funktion.

Das mit der Textfile sehe ich auch als einfachste Möglichkeit. Kann es da aber nicht zu Probleme wegen dem Schreibprozess kommen?
Hatte nämlich auch mal gedacht, den zugriff über eine Datei zu steuern? was ist aber, wenn zwei fast gleichzeitig die DB öffnen und was ist, wenn der eine liest während der andere schreibt etc.?

Einer von beiden wird die Datei als erstes öffnen und darin schreiben.
Der Zweite bekommt dann beim Schreiben eine Exception.
Damit weiß der Zweite, das die DB in Benutzung ist, wartet wein wenig
und schaut erneut nach.
Sicher ist dieses Verfahren allerdings nicht. Was ist, wenn dem Erste, der die
DB gelockt hat, die Applikation abstürzt? Dann ist die DB gesperrt.
 
Zuletzt bearbeitet:

Zurück
Oben