Hallo,
ich möchte ein RMI-Objekt, das Daten enthält (ein "private int"), auf zwei RMI-Servern abgleichen. Dazu will ich das Objekt bei jeder Änderung serialisieren und an den anderen Server übertragen.
Irgendwo im "Hintergrund" soll der Server also das Objekt überwachen und bei Änderungen serialisiert an den Backupserver senden. Alternativ könnte dies natürlich auf einen speziellen Trigger hin geschehen. (Sowas wie die OnChange-Message in Visual C++/MFC)
Ich möchte den Code und das Interface meines Remoteobjekts - ein Counter - möglichst nicht anfassen, damit dieser einfach austauschbar bleibt.
Kann mir jemand einen Tip geben, in welcher Richtung ich denken/suchen muss? (Datenkonsitenz, etc soll jetzt noch nicht betrachtet werden. synchronized oder nicht ist auch erstmal egal, ich brauche nur eine Verbindung vom "Server Main" zu den RMI-Objekten)
Hier noch die Codesnippets (ohne Exceptionhandling)
Der Server:
Das RMI-Objekt (interface entsprechend)
ich möchte ein RMI-Objekt, das Daten enthält (ein "private int"), auf zwei RMI-Servern abgleichen. Dazu will ich das Objekt bei jeder Änderung serialisieren und an den anderen Server übertragen.
Irgendwo im "Hintergrund" soll der Server also das Objekt überwachen und bei Änderungen serialisiert an den Backupserver senden. Alternativ könnte dies natürlich auf einen speziellen Trigger hin geschehen. (Sowas wie die OnChange-Message in Visual C++/MFC)
Ich möchte den Code und das Interface meines Remoteobjekts - ein Counter - möglichst nicht anfassen, damit dieser einfach austauschbar bleibt.
Kann mir jemand einen Tip geben, in welcher Richtung ich denken/suchen muss? (Datenkonsitenz, etc soll jetzt noch nicht betrachtet werden. synchronized oder nicht ist auch erstmal egal, ich brauche nur eine Verbindung vom "Server Main" zu den RMI-Objekten)
Hier noch die Codesnippets (ohne Exceptionhandling)
Der Server:
Code:
public class Server {
public static void main(String[] args) {
CounterImpl myCounter = new CounterImpl();
Naming.rebind("Counter", myCounter);
System.out.println("counter server ready");
// überwache counterobjekte hier, aber wie
}
}
Das RMI-Objekt (interface entsprechend)
Code:
public class CounterImpl extends UnicastRemoteObject implements Counter {
private int counter;
public CounterImpl() throws RemoteException{
counter = 0;
}
public int increment() throws RemoteException {
counter++;
return counter;
}
public int reset() throws RemoteException {
counter = 0;
return counter;
}
}