Chop: Problem ObjectStream / Nach Übertragung alte Daten?!?

Hi Leute,

ich hab hier ein sehr merkwürdiges Problem, was ich mir überhaupt nicht mehr erklären kann. Ich hab das jetzt schon alles genau debugged und ich verstehe einfach nicht, wo da irgendetwas falsch sein kann.

Es handelt sich bei meinem System um eine Client / Server-Architektur. Zur Übertragung von Daten etc. benutze ich ObjectStreams. Darüber schicke ich dann "Messages". Clients können Anfragen stellen und bekommen dann entsprechende Antworten. Falls sich beim Model des Servers etwas relevantes ändert, schickt der Server an die Betreffenden Clients entsprechende Messages. Die sind natürlich serialisierbar.

So, jetzt mein Mysterium:
Beim Server ändert sich etwas an einer Auktion , diese wird von einem Observer überwacht. Es wird der Observer ausgeführt und schickt dann an alle Clients eine neue Message mit den Informationen zur Auktion. Ich hab das mit dem Debugger bis zu dem Punkt verfolgt, wo die Nachricht wirklich abgeschickt und empfangen wird. Wenn diese Nachricht dann beim Client ankommt, enthält sie aber alte Daten, nämlich die, welche die Auktion hatte wenn sie zum ersten Mal geladen wird. Wenn sich nun ein zweiter Client erst später einloggt, hat dieser die aktuellen Daten der Auktion. Wenn sich diese dann ändern, kommt aber auch nur wieder eine Nachricht mit den Daten an, welche der Client nach seinem einloggen bekommen hat.

Ich kann mir nicht erklären, wo diese alten Daten herkommen sollten. Für mich ist es auch sehr merkwürdig, dass zwei verschiedene Client, welche sich an unterschiedlichen Zeitpunkten eingeloggt haben, also auch unterschiedliche Daten bekommen, dann im weiteren Verlauf wieder dieselben zugeschickt bekommen.

HAE?!?!

  1. Hallo Chop,

    Ohne Quelltext kann man da nichts zu sagen. Um den Fehler zu finden, muss man die Anwendung auseinanderpflücken. Ich hoffe mal, dass sie nicht so umfangreich ist, dass das in zu viel Arbeit ausartet.

    Grüße

    Daniel

  2. So, habs selbst gelöst.

    Ich dachte mir dann irgendwie schon, dass es so etwas sein muss.

    Also das Problem ist hier folgendes:

    Da ich jeweils immer dasselbe Object schicke (obwohl sich das Object ja verändert hat) wird es nach dem Empfang instanziiert und die Zustände wieder hergestellt. Da der Empfänger dieses Object schon mal empfangen hat (zwar mit einem anderen Zustand, aber trotzdem dasselbe Object mit derselben internen Object-Id) wird eben dieses dann auch in der Empfangenen Nachricht eingesetzt.

    Ganz schön mies... vor allen Dingen wird dies nicht ausdrücklich in der Doku beschrieben sondern nur der Vorgang, wie ein Object aus dem Object-stream empfangen wird.

    Gruß
    Chop