您的位置:首页 > 其它

关于使用Mina做客户端和服务端传递对象的问题

2014-11-15 17:26 239 查看
刚才使用Mina搭建的客户端和服务端进行消息对象的传递通讯,结果服务端总是报自己的ServerProtocolHandler Exception!

客户端和服务端是分别建的两个单独的工程,两者都一致地使用了ObjectSerializationCodecFactory过滤器,Message消息类也implements了Serializable接口

看上去好像没什么问题,但就是报ServerProtocolHandler Exception!统一用TextLineCodecFactory传递String字符串时就没问题,然后网上查了半天查到下面一段:


使用mina传递对象注意问题点:

1. 首先是客户端和服务端的过滤器要一致,此问题容易导致异常:java.nio.charset.MalformedInputException

2.
要传递的对象在客户端和服务端要传递的类都要实现接口java.io.Serializable; 如果这个对象内部引用了其他类,那么这个“其他类”也是要实现java.io.Serializable接口的,否则容易产生java.io.NotSerializableException

3.
传递的对象所在的包(没错,例如User类在服务端和客户端下都应处于package com.test之下)、且类名等最好一致

到这里,终于看到自己工程的问题所在了,是的,问题就出在3这里了,自己客户端和服务端两个工程中的Message消息类所在包名不一致!
经修改后重新进行客户端和服务端的消息对象通讯就OK啦~ 这里的原因在于,两个Message所在的包名不一致,即属于不同的包,那就是两个不同的类了这样用服务端的Message去解析收到客户端的Message就出错了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: