[Jeg beklager, at jeg i denne tråd ved en fejltagelse kom til at afsende et
"tomt" svar]
Henry Vest skrev
> private final static long serialVersionUID = 3206093459760846163L;
>
> Er der nogen der kan forklare hvad det er? Er det noget specifikt for
> VisualAge, eller er det noget der skal være i en EJB?
Det er en del af Javas object serialiseringsmekanisme og angiver kort sagt
et fingeraftryk af klassen der gemmes sammen med et serialiseret objekt .
Når objektet skal læses ind igen, sammenligner serialiseringsmekanismen det
gemte fingeraftryk med klassen "nye" fingeraftryk og melder fejl hvis ikke
de er ens. Værdien af serialVersionUID bliver dannet ud fra en omfattende
algoritme der gør bl.a. sikre at selv ret små ændringer i klassen giver en
ændret værdi.
Hvis man derfor ændre lidt i sin klasse (fx. tilføjer en metode), så kan man
altså ikke umiddelbart deserialisere objekter serialiseret med den forrige
version af klassen. Hvis ændringen ikke har nogen logisk betydning for
serialisering, så kan det jo godt være et problem, og løsning er så, at man
selv direkte i sin klasse angive serialVersionUID med en værdi svarende til
den klasse man er kompatible med. Normalt vil det sige, at man beholder
samme værdi for serialVersionUID indtil ændringer i klassen ikke længere er
kompatible med gamle serialiseringer hvorefter man opdatere værdien med
serialver programmet.
Se flere detajler på
http://java.sun.com/products/jdk/1.2/docs/guide/serialization/index.html og
http://java.sun.com/products/jdk/1.2/docs/guide/serialization/spec/class.doc
4.html
Mvh,
--
Filip Larsen <filip.larsen@mail.dk>