You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@mina.apache.org by matus <ma...@gmail.com> on 2010/11/05 11:18:05 UTC
ProtocolDecoderException on android
Hi,
I am creating a simple Android app for reading user tasks from server using
Apache Mina.
When tested with Java Swing client everything works fine.On Android however,
a run into ia problem.
The client connects ok, but after I get A protocolDecoderException when
receiveing message from server.
I am using Mina 2.0.1 stable
I am using Objectserialization codec:
acceptor.getFilterChain().addLast( "codec",
new ProtocolCodecFilter( new
ObjectSerializationCodecFactory() ) );
In client handler a get the ProtocolDecoderException:
java.lang.NullPointerException (Hexdump follows
Note; after conversion the hex dump contains this:
¸¬í sr org.jbpm.task.service.Commandxp sr java.util.ArrayListxp w sq
~ w
xx~r !org.jbpm.task.service.CommandNamexr java.lang.Enumxpt
QueryTaskSummaryResponse
Full error listing bellow:
Thanks a lot for any advice
Regards Matus
11-05 10:06:25.658: INFO/System.out(1801): [2010:11:309 10:11:515:exception]
Uncaught exception on client
11-05 10:06:25.658: INFO/System.out(1801):
org.apache.mina.filter.codec.ProtocolDecoderException:
java.lang.NullPointerException (Hexdump: 00 00 01 7F AC ED 00 05 73 72 01 00
1D 6F 72 67 2E 6A 62 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43 6F
6D 6D 61 6E 64 78 70 00 00 00 00 73 72 01 00 13 6A 61 76 61 2E 75 74 69 6C
2E 41 72 72 61 79 4C 69 73 74 78 70 00 00 00 01 77 04 00 00 00 01 73 71 00
7E 00 02 00 00 00 01 77 04 00 00 00 0A 73 72 01 00 1F 6F 72 67 2E 6A 62 70
6D 2E 74 61 73 6B 2E 71 75 65 72 79 2E 54 61 73 6B 53 75 6D 6D 61 72 79 78
70 77 9E 00 00 00 00 00 00 00 01 01 00 16 50 65 72 66 6F 72 6D 61 6E 63 65
20 45 76 61 6C 75 61 74 69 6F 6E 01 00 22 50 6C 65 61 73 65 20 70 65 72 66
6F 72 6D 20 61 20 73 65 6C 66 2D 65 76 61 6C 75 74 61 74 69 6F 6E 2E 01 00
22 50 6C 65 61 73 65 20 70 65 72 66 6F 72 6D 20 61 20 73 65 6C 66 2D 65 76
61 6C 75 74 61 74 69 6F 6E 2E 01 00 08 52 65 73 65 72 76 65 64 00 00 00 00
00 01 00 05 6B 72 69 73 76 01 00 05 6B 72 69 73 76 01 00 00 01 2C 1B 7F 28
78 01 00 00 01 2C 1B 7F 28 78 00 78 78 78 7E 72 01 00 21 6F 72 67 2E 6A 62
70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43 6F 6D 6D 61 6E 64 4E 61
6D 65 78 72 01 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 45 6E 75 6D 78 70 74 00
18 51 75 65 72 79 54 61 73 6B 53 75 6D 6D 61 72 79 52 65 73 70 6F 6E 73 65)
11-05 10:06:25.679: INFO/System.out(1801): at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
11-05 10:06:25.701: INFO/System.out(1801): at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
11-05 10:06:25.720: INFO/System.out(1801): at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
11-05 10:06:25.720: INFO/System.out(1801): at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:692)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:645)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:634)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:66)
11-05 10:06:25.798: INFO/System.out(1801): at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1078)
11-05 10:06:25.857: INFO/System.out(1801): at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
11-05 10:06:25.859: INFO/System.out(1801): at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
11-05 10:06:25.859: INFO/System.out(1801): at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
11-05 10:06:25.859: INFO/System.out(1801): at
java.lang.Thread.run(Thread.java:1096)
11-05 10:06:25.859: INFO/System.out(1801): Caused by:
java.lang.NullPointerException
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1863)
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:826)
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2066)
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929)
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
11-05 10:06:25.879: INFO/System.out(1801): at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
11-05 10:06:25.879: INFO/System.out(1801): at
org.apache.mina.core.buffer.AbstractIoBuffer.getObject(AbstractIoBuffer.java:1982)
11-05 10:06:25.879: INFO/System.out(1801): at
org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
11-05 10:06:25.879: INFO/System.out(1801): at
org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:178)
11-05 10:06:25.879: INFO/System.out(1801): at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
11-05 10:06:25.909: INFO/System.out(1801): ... 15 more
Re: ProtocolDecoderException on android
Posted by Jason Weinstein <ja...@oracle.com>.
I don't know if this will be helpful, but i quickly deconstructed the
AbstractIoBuffer code into a simple main method (from first google
result i found, note not even 2.0.1)
I am a little curious as to why the special serialization code is needed.
For example:
if (desc.forClass().isPrimitive()) {
write(0);
super.writeClassDescriptor(desc); // Note: this
super method appears to do a lot more than just write a name
} else {
write(1);
writeUTF(desc.getName());
}
I would also note that if you write your own handler on the client side
and create your own ObjectInputStream(from some bytes you read) that
unless you do the same thing
as below i'd imagine you'd run into some problems.
Potential suspect:
String className = readUTF();
System.out.println("readClassDescriptor
desc.name: " + className);
Class<?> clazz = Class.forName(className, true,
classLoader);
return ObjectStreamClass.lookup(clazz); //
returning null?
Anyway this simple test passes in my dev setup.
But may want to try it on android and/or
come up with another testcase that fails.
If you provided a concrete example may help (a simple java example).
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
import java.io.Serializable;
import java.io.StreamCorruptedException;
//
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.mina/mina-core/2.0.0-M5/org/apache/mina/core/buffer/AbstractIoBuffer.java
public class ObjectStreamMain {
public static class Foo implements Serializable {
Class<Foo> clazz = Foo.class;
int i1;
int i2 = -1;
Integer i3 = null;
Integer i4 = 1;
Class<Foo>[] classArray = new Class[2];
{
classArray[0] = clazz;
classArray[1] = null;
}
String s = new String("X");
Foo[] fooArray1 = null;
}
public static void main(String[] args) {
final ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Foo o = new Foo(); // String o = new String("X");
try {
ObjectOutputStream out = new ObjectOutputStream(outStream) {
@Override
protected void writeClassDescriptor(ObjectStreamClass
desc) throws IOException {
System.out.println("writeClassDescriptor desc.name:
" + desc.getName());
if (desc.forClass().isPrimitive()) {
write(0);
super.writeClassDescriptor(desc);
} else {
write(1);
writeUTF(desc.getName());
}
}
};
out.writeObject(o);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
ByteArrayInputStream inStream = new
ByteArrayInputStream(outStream.toByteArray());
try {
ObjectInputStream in = new ObjectInputStream(inStream) {
@Override
protected ObjectStreamClass readClassDescriptor() throws
IOException, ClassNotFoundException {
int type = read();
if (type < 0) {
throw new EOFException();
}
switch (type) {
case 0: // Primitive types
return super.readClassDescriptor();
case 1: // Non-primitive types
String className = readUTF();
System.out.println("readClassDescriptor
desc.name: " + className);
Class<?> clazz = Class.forName(className, true,
classLoader);
return ObjectStreamClass.lookup(clazz);
default:
throw new StreamCorruptedException("Unexpected
class descriptor type: " + type);
}
}
@Override
protected Class<?> resolveClass(ObjectStreamClass desc)
throws IOException, ClassNotFoundException {
String name = desc.getName();
System.out.println("resolveClass desc.name: " +
desc.getName());
try {
return Class.forName(name, false, classLoader);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
return super.resolveClass(desc);
}
}
};
System.out.println(in.readObject());
} catch (Exception e) {
e.printStackTrace();
}
}
}
On 11/15/2010 10:06 AM, Mark Proctor wrote:
> I'm using mina 2.0.1 and also receiving a NullPointerException during
> serialization:
> Caused by: java.lang.NullPointerException
> at
> org.apache.mina.core.buffer.AbstractIoBuffer$3.resolveClass(AbstractIoBuffer.java:1974)
> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
> at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
>
> I found the object that was being marshalled has the following field:
> private Class serviceInterface
>
> If I set that to null it works, if it's set to an actual Class it
> nullpointers. The line of code below is where desc is null:
> at
> org.apache.mina.core.buffer.AbstractIoBuffer$3.resolveClass(AbstractIoBuffer.java:1974)
> protected Class<?> resolveClass(ObjectStreamClass desc)
> throws IOException, ClassNotFoundException {
> String name = desc.getName();
>
> This would indicate that the object serialization protocol in mina does not
> support Class as a field type. Is that right?
>
> Mark
>
> Jason Weinstein-3 wrote:
>
>> This is not much to work with, but i'd imagine that you didn't get the
>> full object back on the client.
>>
>> Perhaps the server closed the connection before completing the write.
>> Did you flush after write?
>>
>> Or perhaps you closed the client side prior to a full receive?
>>
>> You may want to try a simple test case where you send a single object
>> like new String("X")
>>
>> see what happens.
>>
>> Also wonder what this source looks like
>>
>> java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
>>
>> as doesn't match up with my jdk.
>>
>> FYI This is what the 2.0.1 Mina source looks like
>>
>> 235
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#235>
>> *while* (in.hasRemaining()) {
>> 236
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#236>
>> *int* oldPos = in.position();
>> 237
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#237>
>> 238
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#238>
>> *try* {
>> 239
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#239>
>> *synchronized* (decoderOut) {
>> 240
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#240>
>> /// Call the decoder with the read bytes/
>> 241
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#241>
>> decoder.decode(session, in, decoderOut);
>> 242
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#242>
>> }
>> 243
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#243>
>> 244
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#244>
>> /// Finish decoding if no exception was thrown./
>> 245
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#245>
>> decoderOut.flush(nextFilter, session);
>> 246
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#246>
>> } *catch* (Throwable t) {
>> 247
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#247>
>> ProtocolDecoderException
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolDecoderException.html>
>> pde;
>> 248
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#248>
>> *if* (t instanceof ProtocolDecoderException) {
>> 249
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#249>
>> pde = (ProtocolDecoderException) t;
>> 250
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#250>
>> } *else* {
>> 251
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#251>
>> pde = *new* ProtocolDecoderException
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolDecoderException.html>(t);
>> 252
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#252>
>> }
>> 253
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#253>
>> 254
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#254>
>> *if* (pde.getHexdump() == *null*) {
>> 255
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#255>
>> /// Generate a message hex dump/
>> 256
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#256>
>> *int* curPos = in.position();
>> 257
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#257>
>> in.position(oldPos);
>> 258
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#258>
>> pde.setHexdump(in.getHexDump());
>> 259
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#259>
>> in.position(curPos);
>> 260
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#260>
>> }
>> 261
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#261>
>> 262
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#262>
>> /// Fire the exceptionCaught event./
>> 263
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#263>
>> decoderOut.flush(nextFilter, session);
>> 264
>> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#264>
>> nextFilter.exceptionCaught(session, pde);
>>
>>
>>
>> On 11/5/2010 3:18 AM, matus wrote:
>>
>>> Hi,
>>> I am creating a simple Android app for reading user tasks from server
>>> using
>>> Apache Mina.
>>> When tested with Java Swing client everything works fine.On Android
>>> however,
>>> a run into ia problem.
>>> The client connects ok, but after I get A protocolDecoderException when
>>> receiveing message from server.
>>> I am using Mina 2.0.1 stable
>>> I am using Objectserialization codec:
>>> acceptor.getFilterChain().addLast( "codec",
>>> new ProtocolCodecFilter( new
>>> ObjectSerializationCodecFactory() ) );
>>>
>>> In client handler a get the ProtocolDecoderException:
>>> java.lang.NullPointerException (Hexdump follows
>>> Note; after conversion the hex dump contains this:
>>> ¸¬í sr org.jbpm.task.service.Commandxp sr java.util.ArrayListxp w
>>> sq
>>> ~ w
>>> xx~r !org.jbpm.task.service.CommandNamexr java.lang.Enumxpt
>>> QueryTaskSummaryResponse
>>>
>>> Full error listing bellow:
>>>
>>> Thanks a lot for any advice
>>> Regards Matus
>>>
>>>
>>> 11-05 10:06:25.658: INFO/System.out(1801): [2010:11:309
>>> 10:11:515:exception]
>>> Uncaught exception on client
>>> 11-05 10:06:25.658: INFO/System.out(1801):
>>> org.apache.mina.filter.codec.ProtocolDecoderException:
>>> java.lang.NullPointerException (Hexdump: 00 00 01 7F AC ED 00 05 73 72 01
>>> 00
>>> 1D 6F 72 67 2E 6A 62 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43
>>> 6F
>>> 6D 6D 61 6E 64 78 70 00 00 00 00 73 72 01 00 13 6A 61 76 61 2E 75 74 69
>>> 6C
>>> 2E 41 72 72 61 79 4C 69 73 74 78 70 00 00 00 01 77 04 00 00 00 01 73 71
>>> 00
>>> 7E 00 02 00 00 00 01 77 04 00 00 00 0A 73 72 01 00 1F 6F 72 67 2E 6A 62
>>> 70
>>> 6D 2E 74 61 73 6B 2E 71 75 65 72 79 2E 54 61 73 6B 53 75 6D 6D 61 72 79
>>> 78
>>> 70 77 9E 00 00 00 00 00 00 00 01 01 00 16 50 65 72 66 6F 72 6D 61 6E 63
>>> 65
>>> 20 45 76 61 6C 75 61 74 69 6F 6E 01 00 22 50 6C 65 61 73 65 20 70 65 72
>>> 66
>>> 6F 72 6D 20 61 20 73 65 6C 66 2D 65 76 61 6C 75 74 61 74 69 6F 6E 2E 01
>>> 00
>>> 22 50 6C 65 61 73 65 20 70 65 72 66 6F 72 6D 20 61 20 73 65 6C 66 2D 65
>>> 76
>>> 61 6C 75 74 61 74 69 6F 6E 2E 01 00 08 52 65 73 65 72 76 65 64 00 00 00
>>> 00
>>> 00 01 00 05 6B 72 69 73 76 01 00 05 6B 72 69 73 76 01 00 00 01 2C 1B 7F
>>> 28
>>> 78 01 00 00 01 2C 1B 7F 28 78 00 78 78 78 7E 72 01 00 21 6F 72 67 2E 6A
>>> 62
>>> 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43 6F 6D 6D 61 6E 64 4E
>>> 61
>>> 6D 65 78 72 01 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 45 6E 75 6D 78 70 74
>>> 00
>>> 18 51 75 65 72 79 54 61 73 6B 53 75 6D 6D 61 72 79 52 65 73 70 6F 6E 73
>>> 65)
>>> 11-05 10:06:25.679: INFO/System.out(1801): at
>>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
>>> 11-05 10:06:25.701: INFO/System.out(1801): at
>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>>> 11-05 10:06:25.720: INFO/System.out(1801): at
>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
>>> 11-05 10:06:25.720: INFO/System.out(1801): at
>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:692)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:645)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:634)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:66)
>>> 11-05 10:06:25.798: INFO/System.out(1801): at
>>> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1078)
>>> 11-05 10:06:25.857: INFO/System.out(1801): at
>>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>>> 11-05 10:06:25.859: INFO/System.out(1801): at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
>>> 11-05 10:06:25.859: INFO/System.out(1801): at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
>>> 11-05 10:06:25.859: INFO/System.out(1801): at
>>> java.lang.Thread.run(Thread.java:1096)
>>> 11-05 10:06:25.859: INFO/System.out(1801): Caused by:
>>> java.lang.NullPointerException
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1863)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:826)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2066)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> org.apache.mina.core.buffer.AbstractIoBuffer.getObject(AbstractIoBuffer.java:1982)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:178)
>>> 11-05 10:06:25.879: INFO/System.out(1801): at
>>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
>>> 11-05 10:06:25.909: INFO/System.out(1801): ... 15 more
>>>
>>>
>>>
>>
>
>
Re: ProtocolDecoderException on android
Posted by Mark Proctor <mp...@codehaus.org>.
I'm using mina 2.0.1 and also receiving a NullPointerException during
serialization:
Caused by: java.lang.NullPointerException
at
org.apache.mina.core.buffer.AbstractIoBuffer$3.resolveClass(AbstractIoBuffer.java:1974)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
I found the object that was being marshalled has the following field:
private Class serviceInterface
If I set that to null it works, if it's set to an actual Class it
nullpointers. The line of code below is where desc is null:
at
org.apache.mina.core.buffer.AbstractIoBuffer$3.resolveClass(AbstractIoBuffer.java:1974)
protected Class<?> resolveClass(ObjectStreamClass desc)
throws IOException, ClassNotFoundException {
String name = desc.getName();
This would indicate that the object serialization protocol in mina does not
support Class as a field type. Is that right?
Mark
Jason Weinstein-3 wrote:
>
> This is not much to work with, but i'd imagine that you didn't get the
> full object back on the client.
>
> Perhaps the server closed the connection before completing the write.
> Did you flush after write?
>
> Or perhaps you closed the client side prior to a full receive?
>
> You may want to try a simple test case where you send a single object
> like new String("X")
>
> see what happens.
>
> Also wonder what this source looks like
>
> java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
>
> as doesn't match up with my jdk.
>
> FYI This is what the 2.0.1 Mina source looks like
>
> 235
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#235>
> *while* (in.hasRemaining()) {
> 236
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#236>
> *int* oldPos = in.position();
> 237
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#237>
> 238
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#238>
> *try* {
> 239
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#239>
> *synchronized* (decoderOut) {
> 240
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#240>
> /// Call the decoder with the read bytes/
> 241
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#241>
> decoder.decode(session, in, decoderOut);
> 242
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#242>
> }
> 243
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#243>
> 244
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#244>
> /// Finish decoding if no exception was thrown./
> 245
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#245>
> decoderOut.flush(nextFilter, session);
> 246
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#246>
> } *catch* (Throwable t) {
> 247
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#247>
> ProtocolDecoderException
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolDecoderException.html>
> pde;
> 248
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#248>
> *if* (t instanceof ProtocolDecoderException) {
> 249
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#249>
> pde = (ProtocolDecoderException) t;
> 250
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#250>
> } *else* {
> 251
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#251>
> pde = *new* ProtocolDecoderException
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolDecoderException.html>(t);
> 252
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#252>
> }
> 253
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#253>
> 254
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#254>
> *if* (pde.getHexdump() == *null*) {
> 255
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#255>
> /// Generate a message hex dump/
> 256
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#256>
> *int* curPos = in.position();
> 257
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#257>
> in.position(oldPos);
> 258
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#258>
> pde.setHexdump(in.getHexDump());
> 259
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#259>
> in.position(curPos);
> 260
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#260>
> }
> 261
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#261>
> 262
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#262>
> /// Fire the exceptionCaught event./
> 263
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#263>
> decoderOut.flush(nextFilter, session);
> 264
> <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#264>
> nextFilter.exceptionCaught(session, pde);
>
>
>
> On 11/5/2010 3:18 AM, matus wrote:
>> Hi,
>> I am creating a simple Android app for reading user tasks from server
>> using
>> Apache Mina.
>> When tested with Java Swing client everything works fine.On Android
>> however,
>> a run into ia problem.
>> The client connects ok, but after I get A protocolDecoderException when
>> receiveing message from server.
>> I am using Mina 2.0.1 stable
>> I am using Objectserialization codec:
>> acceptor.getFilterChain().addLast( "codec",
>> new ProtocolCodecFilter( new
>> ObjectSerializationCodecFactory() ) );
>>
>> In client handler a get the ProtocolDecoderException:
>> java.lang.NullPointerException (Hexdump follows
>> Note; after conversion the hex dump contains this:
>> ¸¬í sr org.jbpm.task.service.Commandxp sr java.util.ArrayListxp w
>> sq
>> ~ w
>> xx~r !org.jbpm.task.service.CommandNamexr java.lang.Enumxpt
>> QueryTaskSummaryResponse
>>
>> Full error listing bellow:
>>
>> Thanks a lot for any advice
>> Regards Matus
>>
>>
>> 11-05 10:06:25.658: INFO/System.out(1801): [2010:11:309
>> 10:11:515:exception]
>> Uncaught exception on client
>> 11-05 10:06:25.658: INFO/System.out(1801):
>> org.apache.mina.filter.codec.ProtocolDecoderException:
>> java.lang.NullPointerException (Hexdump: 00 00 01 7F AC ED 00 05 73 72 01
>> 00
>> 1D 6F 72 67 2E 6A 62 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43
>> 6F
>> 6D 6D 61 6E 64 78 70 00 00 00 00 73 72 01 00 13 6A 61 76 61 2E 75 74 69
>> 6C
>> 2E 41 72 72 61 79 4C 69 73 74 78 70 00 00 00 01 77 04 00 00 00 01 73 71
>> 00
>> 7E 00 02 00 00 00 01 77 04 00 00 00 0A 73 72 01 00 1F 6F 72 67 2E 6A 62
>> 70
>> 6D 2E 74 61 73 6B 2E 71 75 65 72 79 2E 54 61 73 6B 53 75 6D 6D 61 72 79
>> 78
>> 70 77 9E 00 00 00 00 00 00 00 01 01 00 16 50 65 72 66 6F 72 6D 61 6E 63
>> 65
>> 20 45 76 61 6C 75 61 74 69 6F 6E 01 00 22 50 6C 65 61 73 65 20 70 65 72
>> 66
>> 6F 72 6D 20 61 20 73 65 6C 66 2D 65 76 61 6C 75 74 61 74 69 6F 6E 2E 01
>> 00
>> 22 50 6C 65 61 73 65 20 70 65 72 66 6F 72 6D 20 61 20 73 65 6C 66 2D 65
>> 76
>> 61 6C 75 74 61 74 69 6F 6E 2E 01 00 08 52 65 73 65 72 76 65 64 00 00 00
>> 00
>> 00 01 00 05 6B 72 69 73 76 01 00 05 6B 72 69 73 76 01 00 00 01 2C 1B 7F
>> 28
>> 78 01 00 00 01 2C 1B 7F 28 78 00 78 78 78 7E 72 01 00 21 6F 72 67 2E 6A
>> 62
>> 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43 6F 6D 6D 61 6E 64 4E
>> 61
>> 6D 65 78 72 01 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 45 6E 75 6D 78 70 74
>> 00
>> 18 51 75 65 72 79 54 61 73 6B 53 75 6D 6D 61 72 79 52 65 73 70 6F 6E 73
>> 65)
>> 11-05 10:06:25.679: INFO/System.out(1801): at
>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
>> 11-05 10:06:25.701: INFO/System.out(1801): at
>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>> 11-05 10:06:25.720: INFO/System.out(1801): at
>> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
>> 11-05 10:06:25.720: INFO/System.out(1801): at
>> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:692)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:645)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:634)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:66)
>> 11-05 10:06:25.798: INFO/System.out(1801): at
>> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1078)
>> 11-05 10:06:25.857: INFO/System.out(1801): at
>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>> 11-05 10:06:25.859: INFO/System.out(1801): at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
>> 11-05 10:06:25.859: INFO/System.out(1801): at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
>> 11-05 10:06:25.859: INFO/System.out(1801): at
>> java.lang.Thread.run(Thread.java:1096)
>> 11-05 10:06:25.859: INFO/System.out(1801): Caused by:
>> java.lang.NullPointerException
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1863)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:826)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2066)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> org.apache.mina.core.buffer.AbstractIoBuffer.getObject(AbstractIoBuffer.java:1982)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:178)
>> 11-05 10:06:25.879: INFO/System.out(1801): at
>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
>> 11-05 10:06:25.909: INFO/System.out(1801): ... 15 more
>>
>>
>
>
--
View this message in context: http://old.nabble.com/ProtocolDecoderException-on-android-tp30139789p30221597.html
Sent from the Apache MINA User Forum mailing list archive at Nabble.com.
Re: ProtocolDecoderException on android
Posted by Jason Weinstein <ja...@oracle.com>.
This is not much to work with, but i'd imagine that you didn't get the
full object back on the client.
Perhaps the server closed the connection before completing the write.
Did you flush after write?
Or perhaps you closed the client side prior to a full receive?
You may want to try a simple test case where you send a single object
like new String("X")
see what happens.
Also wonder what this source looks like
java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
as doesn't match up with my jdk.
FYI This is what the 2.0.1 Mina source looks like
235 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#235> *while* (in.hasRemaining()) {
236 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#236> *int* oldPos = in.position();
237 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#237>
238 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#238> *try* {
239 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#239> *synchronized* (decoderOut) {
240 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#240> /// Call the decoder with the read bytes/
241 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#241> decoder.decode(session, in, decoderOut);
242 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#242> }
243 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#243>
244 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#244> /// Finish decoding if no exception was thrown./
245 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#245> decoderOut.flush(nextFilter, session);
246 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#246> } *catch* (Throwable t) {
247 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#247> ProtocolDecoderException <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolDecoderException.html> pde;
248 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#248> *if* (t instanceof ProtocolDecoderException) {
249 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#249> pde = (ProtocolDecoderException) t;
250 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#250> } *else* {
251 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#251> pde = *new* ProtocolDecoderException <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolDecoderException.html>(t);
252 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#252> }
253 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#253>
254 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#254> *if* (pde.getHexdump() == *null*) {
255 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#255> /// Generate a message hex dump/
256 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#256> *int* curPos = in.position();
257 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#257> in.position(oldPos);
258 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#258> pde.setHexdump(in.getHexDump());
259 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#259> in.position(curPos);
260 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#260> }
261 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#261>
262 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#262> /// Fire the exceptionCaught event./
263 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#263> decoderOut.flush(nextFilter, session);
264 <http://mina.apache.org/report/trunk/xref/org/apache/mina/filter/codec/ProtocolCodecFilter.html#264> nextFilter.exceptionCaught(session, pde);
On 11/5/2010 3:18 AM, matus wrote:
> Hi,
> I am creating a simple Android app for reading user tasks from server using
> Apache Mina.
> When tested with Java Swing client everything works fine.On Android however,
> a run into ia problem.
> The client connects ok, but after I get A protocolDecoderException when
> receiveing message from server.
> I am using Mina 2.0.1 stable
> I am using Objectserialization codec:
> acceptor.getFilterChain().addLast( "codec",
> new ProtocolCodecFilter( new
> ObjectSerializationCodecFactory() ) );
>
> In client handler a get the ProtocolDecoderException:
> java.lang.NullPointerException (Hexdump follows
> Note; after conversion the hex dump contains this:
> ¸¬í sr org.jbpm.task.service.Commandxp sr java.util.ArrayListxp w sq
> ~ w
> xx~r !org.jbpm.task.service.CommandNamexr java.lang.Enumxpt
> QueryTaskSummaryResponse
>
> Full error listing bellow:
>
> Thanks a lot for any advice
> Regards Matus
>
>
> 11-05 10:06:25.658: INFO/System.out(1801): [2010:11:309 10:11:515:exception]
> Uncaught exception on client
> 11-05 10:06:25.658: INFO/System.out(1801):
> org.apache.mina.filter.codec.ProtocolDecoderException:
> java.lang.NullPointerException (Hexdump: 00 00 01 7F AC ED 00 05 73 72 01 00
> 1D 6F 72 67 2E 6A 62 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43 6F
> 6D 6D 61 6E 64 78 70 00 00 00 00 73 72 01 00 13 6A 61 76 61 2E 75 74 69 6C
> 2E 41 72 72 61 79 4C 69 73 74 78 70 00 00 00 01 77 04 00 00 00 01 73 71 00
> 7E 00 02 00 00 00 01 77 04 00 00 00 0A 73 72 01 00 1F 6F 72 67 2E 6A 62 70
> 6D 2E 74 61 73 6B 2E 71 75 65 72 79 2E 54 61 73 6B 53 75 6D 6D 61 72 79 78
> 70 77 9E 00 00 00 00 00 00 00 01 01 00 16 50 65 72 66 6F 72 6D 61 6E 63 65
> 20 45 76 61 6C 75 61 74 69 6F 6E 01 00 22 50 6C 65 61 73 65 20 70 65 72 66
> 6F 72 6D 20 61 20 73 65 6C 66 2D 65 76 61 6C 75 74 61 74 69 6F 6E 2E 01 00
> 22 50 6C 65 61 73 65 20 70 65 72 66 6F 72 6D 20 61 20 73 65 6C 66 2D 65 76
> 61 6C 75 74 61 74 69 6F 6E 2E 01 00 08 52 65 73 65 72 76 65 64 00 00 00 00
> 00 01 00 05 6B 72 69 73 76 01 00 05 6B 72 69 73 76 01 00 00 01 2C 1B 7F 28
> 78 01 00 00 01 2C 1B 7F 28 78 00 78 78 78 7E 72 01 00 21 6F 72 67 2E 6A 62
> 70 6D 2E 74 61 73 6B 2E 73 65 72 76 69 63 65 2E 43 6F 6D 6D 61 6E 64 4E 61
> 6D 65 78 72 01 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 45 6E 75 6D 78 70 74 00
> 18 51 75 65 72 79 54 61 73 6B 53 75 6D 6D 61 72 79 52 65 73 70 6F 6E 73 65)
> 11-05 10:06:25.679: INFO/System.out(1801): at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
> 11-05 10:06:25.701: INFO/System.out(1801): at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> 11-05 10:06:25.720: INFO/System.out(1801): at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
> 11-05 10:06:25.720: INFO/System.out(1801): at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:692)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:645)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:634)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:66)
> 11-05 10:06:25.798: INFO/System.out(1801): at
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1078)
> 11-05 10:06:25.857: INFO/System.out(1801): at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
> 11-05 10:06:25.859: INFO/System.out(1801): at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
> 11-05 10:06:25.859: INFO/System.out(1801): at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
> 11-05 10:06:25.859: INFO/System.out(1801): at
> java.lang.Thread.run(Thread.java:1096)
> 11-05 10:06:25.859: INFO/System.out(1801): Caused by:
> java.lang.NullPointerException
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectStreamField.resolve(ObjectStreamField.java:351)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1863)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:826)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2066)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> org.apache.mina.core.buffer.AbstractIoBuffer.getObject(AbstractIoBuffer.java:1982)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:178)
> 11-05 10:06:25.879: INFO/System.out(1801): at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
> 11-05 10:06:25.909: INFO/System.out(1801): ... 15 more
>
>