Hallo!
Wenn man per RMI Daten überträgt (die bekanntlich serialisierbar sein müssen), dann muss man ja aufpassen, ob im Objektgraphen nicht ausversehen noch andere Dinge mitserialisiert werden und man so unbewusst das halbe Clientprogramm verschickt. Ich stehe gerade auf dem Schlauch, gilt das auch für folgende Situation?
Mein RMI-Client soll per Callback antworten entgegennehmen und sie in einer Liste abspeichern. Dazu gibt es auf Clientseite eine Klasse, welche analog zur Serverseite nochmals von UnicastRemoteObject erbt und Remote implementiert, nennen wir sie ClientRemote.
1.)
Beim RMI-Server registriere ich mich so: server.register(new ClientRemote());
Der Server soll dann über das übergebene Objekt Einträge in die Liste des Clients vornehmen können.
Wird jedoch beim registrieren die Liste mitübertragen? Der Server soll von dieser ja nichts wissen, oder anders gesagt das würde unnötigen Traffic erzeugen.
2.)
Der Einfachheit halber besitzt der obige RemoteClient eine eigene Liste. Gerne würde ich den RemoteClient aber Einträge in eine Liste schreiben lassen, sie sich irgendwo anders im Client befindet. Gibt es da bei der Umsetzung etwas zu beachten?
Kann ich einfach per Setter-Methode eine Referenz auf die externe Liste übergeben?
vielen Dank!
Wenn man per RMI Daten überträgt (die bekanntlich serialisierbar sein müssen), dann muss man ja aufpassen, ob im Objektgraphen nicht ausversehen noch andere Dinge mitserialisiert werden und man so unbewusst das halbe Clientprogramm verschickt. Ich stehe gerade auf dem Schlauch, gilt das auch für folgende Situation?
Mein RMI-Client soll per Callback antworten entgegennehmen und sie in einer Liste abspeichern. Dazu gibt es auf Clientseite eine Klasse, welche analog zur Serverseite nochmals von UnicastRemoteObject erbt und Remote implementiert, nennen wir sie ClientRemote.
Java:
public class ClientRemote extends UnicastRemoteObject implements Client {
List<MyType> MyList = Collections.synchronizedList(new ArrayList<MyType>());
protected ClientRemote() throws RemoteException {
super();
}
@Override
public void addToClientList(MyType xy) throws RemoteException {
MyList.add(xy);
}
}
1.)
Beim RMI-Server registriere ich mich so: server.register(new ClientRemote());
Der Server soll dann über das übergebene Objekt Einträge in die Liste des Clients vornehmen können.
Wird jedoch beim registrieren die Liste mitübertragen? Der Server soll von dieser ja nichts wissen, oder anders gesagt das würde unnötigen Traffic erzeugen.
2.)
Der Einfachheit halber besitzt der obige RemoteClient eine eigene Liste. Gerne würde ich den RemoteClient aber Einträge in eine Liste schreiben lassen, sie sich irgendwo anders im Client befindet. Gibt es da bei der Umsetzung etwas zu beachten?
Kann ich einfach per Setter-Methode eine Referenz auf die externe Liste übergeben?
vielen Dank!
Zuletzt bearbeitet: