RMI 1.) Entfernte Objekte "Zwischenspeichern" 2.) Threadsicherheit

Status
Nicht offen für weitere Antworten.

SegFault

Bekanntes Mitglied
Ich würde gerne folgendes Erreichen:
In meiner Anwendung muss sich ein nutzer anmelden. Damit bekommt er ein objekt zugewiesen mit dem er dann konkrete Aktionen auf dem Server tätigen kann. Durch dieses Objekt weiss ich welcher Nutzer angemeldet ist. Leider verliere ich ja im Server, nachdem ich das Remote Objekt rausgegeben habe, das Objekt auf Serverseite. Führe ich das Objekt z.B. in einen Vector oder einer Liste auf Serverseite mit. Kann ich nicht mehr genau bestimmen wann ich es nicht mehr brauche (Auf Clientseite freigegeben). Gibt es irgend ein möglichkeit um auf Serverseite zu bestimmen wann ein Objekt freigegeben werden kann damit es aus so einer Liste rauskommt? Finalized wäre mein erster ansatz (in verbindung mit weak_reference) aber so wirklich das wahre ist es wohl auch nicht, da bei finalized ja nicht garantiert wird wann es ausgeführt wird. Alternative wäre eine phantom_reference in verbindung mit einer Reference_queue die in einen Thread immer Removed und Damit herausfindet welcher Nutzer ausgeloggt hat.

Als zweites habe ich eine Frage wegen Threadsicherheit:
Prinzipiell ist ja RMI sowas wie eine Multithreading umgebung. Es wird ja nirgendswo festgelegt wann welcher client was abfragt. Wie hat sich das dann mit einer Login Methode die als allgemeiner Service angeboten wird? Soll ich die allgemein Synchronized machen? Reicht es da nur über bestimmte Variablen zu locken die exklusiv sein sollen?
 
T

tuxedo

Gast
Zu Frage 1)

Das Objekt, das du am Server erzeugst und dem Client schickst, sollte "Unreferenced" implementieren. Dieses Interface bringt eine Methode mit die ausgeführt wird, wenn das Callback-Objekt vom Client nicht mehr referenziert wird.

Siehe dazu auch: sun.rmi Properties --> sun.rmi.dgc.server.gcInterval

Zu Frage 2)

Synchronisierung brauchst du nur, wenn du in der Login-Methode Dinge tust die in einer Multithreaded Umgebung Probleme bereiten können. Wenn du beispielsweise die zurückzuliefernden Callback-Objekte in einer Liste speicherst solltest du sicherstellen, dass der Zugriff auf die Liste auch dann noch sauber funktioniert, wenn die Login-Methode mehrfach parallel aufgerufen wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JSON-Objekte richtig parsen Netzwerkprogrammierung 8
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
C List Deserialisierung entfernt Objekte Netzwerkprogrammierung 2
F HTTP Serialisierte Objekte aus Datei von Server Netzwerkprogrammierung 1
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
V Socket Objekte werden nicht aktualisiert Netzwerkprogrammierung 2
S Socket Über UDP Objekte verschicken Netzwerkprogrammierung 9
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
S Kapselung der Netz-Objekte Netzwerkprogrammierung 3
B verschiedene Serialisierte Objekte identifizieren? Netzwerkprogrammierung 5
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T Laufen Objekte, die vom Cajo-Server geliefert werden, lokal auf dem Client? Netzwerkprogrammierung 4
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Messenger - String oder Objekte Netzwerkprogrammierung 4
S Netzwerk und Objekte Netzwerkprogrammierung 5
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
R Mittels BufferedReader Objekte lesen? Netzwerkprogrammierung 5
M Objekte senden zwischen Java und PHP mit SOAP Netzwerkprogrammierung 9
A Objekte in übergebenen Objekten mit WebServices? Netzwerkprogrammierung 6
A RMI wie kann ich objekte übergeben? Netzwerkprogrammierung 5
P Serialialiserte Objekte übers Netzwerk verschicken Netzwerkprogrammierung 9
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
E Alle IPs im Lan herausfinden und zwischenspeichern? Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben