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

来源:互联网 发布:网站用php与asp哪个好 编辑:程序博客网 时间:2024/05/16 10:50

刚才使用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就出错了!


0 0
原创粉丝点击