On 3/10/11 5:00 PM, Ulrich Kreher wrote:
Hi,
Hi,
you are most certainly right Can you fill a JIRA issue ?
we have obviously the same issue as some other guy back in November
2010 (ProtocolDecoderException on android). I stumbled across this
when switching from Mina 1.1.7 to Mina 2.0.2. Apparently Mina 1.1.7
does not have the problem.
Unfortunately there has not been a solution yet, but I can provide
some more information on the issue:
The problem is the usage of ObjectStreamClass.lookup(Class) at
AbstractIoBuffer:1964. ObjectStreamClass.lookup(Class) returns null
for classes that are not serialisable. This leads to the following issue:
public class PDETest
{
static class Field
{ }
static class SerialisableField implements Serializable
{ }
static class Transferred
{
Field notWorking;
SerialisableField working;
}
}
You can set notWorking to either an instance of SerialisableField or
even to null. Deserialisation of an instance of Transferred will
always fail due to ObjectStreamClass.lookup(Class) returning null for
the Field-class (which does not implement Serializable).
I think this is a bug, since it is completely legal to transfer a
field of a non-serialisable type as long as the value of the field is
serialisable. Using a non-serialisable value is not a problem when
deserialising since this will raise an exception when serialising.
Using ObjectStreamClass.lookup(Class, true) instead of
ObjectStreamClass.lookup(Class) would solve this issue, but it may
have some consequences I cannot see yet.
Ulrich
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com