Hi,
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