[Java lista] serialization

Tamás Magyar magyusz at gmail.com
2008. Júl. 24., Cs, 18:02:52 CEST


Ha az adott kliens számára érdektelenül változik a class - pl. az
általad említett eset, hogy új mezőt veszel fel a szerveren lévő class
verzióban -, akkor nem lesz hiba a lefixált serialVersionUID -vel. Ezt
tapasztalatból mondom - pont új mező felvételével próbáltam, Java 1.5
Spring HttpInvoker környezetben -, de szerintem logikus is, hogy így
működik.

A serialVersionUID egy védelem arra, hogy a szerializáló
Classloaderben ugyanaz a verzió legyen, mint a deszerializálóban
(hiszen ha belegondolsz, rengeteg zavar lehet ebből), de ha
szándékosan kijátszod, az nem zavarja a szerializációs mechanizmust,
legfeljebb Téged.

Azért ez a megoldás elég nagy odafigyelést igényel, mert ha elfelejted
változtatni a serialVersionUID-t egy kliens számára is érdekes
változásnál, akkor az oda is vezethet, hogy hibát nem dob a
deszerializáció, viszont null értékű adattagok lesznek... az utódod
meg debugolás közben majd emleget... :)


Magyusz
--
I-Logic Kft.

2008/7/24 Fisha <fisha at freemail.hu>:
> Szia!
>
> Köszi a választ.
>
> Nem lesz belőle hiba, ha én kézzel nem léptetem, de közben meg - ha az adott
> kliens számára érdektelenül is, de - változik a class?
>
> Üdv,
>
> Fisha                            mailto:fisha at freemail.hu
>
>> Azt javaslom, hogy adj meg (pl. Eclipse-szel generálj)
>
>> serialVersionUID -t (pl. private static final long serialVersionUID =
>
>> 6178037639795281122L;)
>
>> és azt csak akkor változtasd, ha direkt szeretnéd, hogy szerializációs
>
>> probléma legyen.
>
>> Ha nem adsz meg serialVersionUID -t, akkor generálódik egy, ami más
>
>> lesz, ha változnak a mezők.
>
>> Magyusz
>
>> --
>
>> I-Logic Kft.
>
>> 2008/7/24 Fisha <fisha at freemail.hu>:
>
>>> Sziasztok
>
>>> Adott egy EJB-s alkalmazás. Az EJB-s rétegben megváltozik egy osztály
>
>>> (mondjuk kerül bele egy új mező vagy metódus). Van egy olyan kliense, aki
>
>>> használja ugyan ezt az osztályt, de marhára nem érdekli ez az új mező.
>
>>> Megoldható, hogy kliens jar csere nélkül se legyen serializációs probléma?
>
>>> Előre is köszi a válaszokat!
>
>>> Üdv,
>
>>> Fisha                            mailto:fisha at freemail.hu
>
>
>>> _______________________________________________
>
>>> Javalist mailing list
>
>>> Javalist at javagrund.hu
>
>>> http://javagrund.hu/mailman/listinfo/javalist
>
>> _______________________________________________
>
>> Javalist mailing list
>
>> Javalist at javagrund.hu
>
>> http://javagrund.hu/mailman/listinfo/javalist
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>


További információk a(z) Javalist levelezőlistáról