Following from this previous post (below). I tried making the change I suggested and
it didn't help at all (whoops - didn't spot the overriding readObject() and
writeObject() methods!). Having found no substantive differences between the old and
new MailImpl and MailAddress classes, in terms of serialization, I eventually resorted
to the more risky approach and added in the following lines at the beginning of the
respective classes:
MailImpl.java:
static final long serialVersionUID=-4289663364703986260L;
MailAddress.java:
static final long serialVersionUID=2779163542539434916L;
This may not be elegant, but it works!
Stuart.
P.S. Sorry if I've repeated someone else, my unreliable mail provider (nothing to do
with JAMES) is being unreliable at the moment and I'm not getting any mail. If anyone
particularly wants to mail me (not that you would!) please use the .co.uk address.
On Tuesday, November 28, 2000, at 04:48 PM, Stuart Roebuck wrote:
> On Tuesday, November 28, 2000, at 12:16 PM, Serge Knystautas wrote:
>
> > I'd very much like to, but how can we do this? I believe the only
> > serialization problem revolve around the MailAddress class (both as the
> > sender and the collection of recipients). I'm not a wiz on serialization,
> > so does anybody know how we could deserialize these objects across class
> > versioning?
> >
>
> I've just had a quick read of E.R.Harold's "Java IO" (O'Reilly) and a bit of a net
>search on
> the subject.
>
> Basically, when a class is serialized, it is versioned with the value of the static
>long
> final serialVersionUID. If this has not been explicitly set, then it is
>automatically set
> (at run time?) by calculating a form of hash function based on things about the
>class that
> affect serialization. So, in theory, if changes are made to a class that don't
>affect
> serialization, they will have no effect on the automatic serialVersionUID.
>
> The serialver tool (part of the JDK) will output the serialVersionUID of a given
>class, so
> you can compare two versions of a class and see if they have 'broken' the
>serialization.
>
>
> Looking at the code, the problem is, I think, in
>org/apache/james/core/MailImpl.java.
>
> Between versions 1.2 and 1.3 of that class, the serialized property messageIn was
> removed. (Here's the declarations at the beginning of version 1.2 in the CVS):
>
> > private String errorMessage;
> > private String state;
> > private MimeMessage message;
> > private InputStream messageIn; // <-- Removed in Version 1.3
> > private MailAddress sender;
> > private Collection recipients;
> > private String name;
> > private String remoteHost = "localhost";
> > private String remoteAddr = "127.0.0.1";
> > private Date lastUpdated = new Date();
>
> In theory, all that should be necessary to fix serialization is to add the
>declaration back
> in.
>
> Next time we have to break serialization, we might want to mark as "transient" any
> properties that don't need to be serialized so we are less likely to hit this
>problem again.
>
> Stuart.
> ** We are currently experiencing prolonged difficulties with our email **
> ** provider DIGIWEB and INTERLIANT. To guarantee that your response **
> ** is received, please replace "adolos.com" with "adolos.co.uk" **
> ** in your response. **
>
> -------------------------------------------------------------------------
> Stuart Roebuck, BSc, MBA Tel.: 0131 228 4853 / Fax.: 0870 054 8322
> Managing Director Alpha Numeric Pager: 07654 588898
> ADOLOS http://www.adolos.com/
>
> ------------------------------------------------------------
> To subscribe: [EMAIL PROTECTED]
> To unsubscribe: [EMAIL PROTECTED]
> Archives: <http://www.mail-archive.com/james%40list.working-dogs.com/>
> Problems?: [EMAIL PROTECTED]
>
>
** We are currently experiencing prolonged difficulties with our email **
** provider DIGIWEB and INTERLIANT. To guarantee that your response **
** is received, please replace "adolos.com" with "adolos.co.uk" **
** in your response. **
-------------------------------------------------------------------------
Stuart Roebuck [EMAIL PROTECTED]
Lead Developer Mac OS X, Java, XML, etc.
ADOLOS http://www.adolos.com/
------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Archives: <http://www.mail-archive.com/james%40list.working-dogs.com/>
Problems?: [EMAIL PROTECTED]