使用mina2对象传输数据是,传输的数据序列化错误与解决方案

来源:互联网 发布:淘宝美工工资待遇 编辑:程序博客网 时间:2024/05/16 09:34
[10:55:29] NioProcessor-2 WARN  [] [] [org.apache.mina.core.service.IoHandlerAdapter] - EXCEPTION, please implement com.nikey.server.NewMessageHandler.exceptionCaught() for proper handling:
org.apache.mina.filter.codec.ProtocolDecoderException: org.apache.mina.core.buffer.BufferDataException: java.io.StreamCorruptedException: invalid type code: 00 (Hexdump: 00 00 00 53 AC ED 00 05 73 72 01 00 17 63 6F 6D 2E 6E 69 6B 65 79 2E 6D 65 73 73 61 67 65 2E 4C 6F 67 69 6E 78 70 00 00 00 01 74 00 20 32 30 32 63 62 39 36 32 61 63 35 39 30 37 35 62 39 36 34 62 30 37 31 35 32 64 32 33 34 62 37 30 74 00 07 68 61 6E 79 61 6E 67)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:251)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
at org.apache.mina.filter.logging.LoggingFilter.messageReceived(LoggingFilter.java:177)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:715)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.mina.core.buffer.BufferDataException: java.io.StreamCorruptedException: invalid type code: 00
at org.apache.mina.core.buffer.AbstractIoBuffer.getObject(AbstractIoBuffer.java:2217)
at org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
at org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:127)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
... 19 more
Caused by: java.io.StreamCorruptedException: invalid type code: 00
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at org.apache.mina.core.buffer.AbstractIoBuffer.getObject(AbstractIoBuffer.java:2215)

... 22 more



在使用mina2传对象类型的数据时,以上错误:

原因是自己在传自己定义的对像时,序列化出了问题

解决方法:

每个要传的数据对象都要实现序列化接口,并且必须实现一个无参的构造函数。