När jag skickar ett objekt över nätverk (med ObjectOutputStream) går det jättebra första gången, men när servern andra gången skickar exakt samma objekt så följer inga ändringar i objektet med till klienten.
Om jag exv har skapat ett rum med namnet "test1" och skickar det objektet till klienten, och sedan ändrar namnet till "test2" och skickar objektet igen, så kommer klienten inte att få det nya namnet, utan objektet som den mottar ser ut som det "gamla" objektet.
Det verkar som om den bara skickar en referens till objektet när klienten redan har det eller något.
Hur kommer man runt detta?
(Objektet är såklart Serialiazable, och skickas och tas emot med ObjectOutputStrean vs. ObjectInputStream)
/Anders
Hmm, hittade lösningen själv.
Som jag misstänkte håller både ObjectOutputStream och ObjectInputStream reda på vilka objekt som redan skickats/tagits emot, så de ger bara referensen till det objektet i såna fall.
För att gå runt detta problem måste någon av dem nollställas innan man kan skicka över samma objekt igen. Like this:
final OutputStream out = sock.getOutputStream();
final ObjectOutputStream oout = new ObjectOutputStream(out);
Room room = new Room("hej");
oout.writeObject(room);
oout.flush();
room.setName("hejdå");
//För att skicka det uppdaterade rummet måste oout nollställas
oout.reset();
oout.writeObject(room);
oout.flush();
Så man nollställer alltså med oout.reset() innan man ska skicka objektet på nytt.