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.