Mina常见异常
来源:互联网 发布:天猫秒杀软件哪个好 编辑:程序博客网 时间:2024/05/01 05:41
1.MINA传递大文本时, 会出现异常: org.apache.mina.common.BufferDataException: Line is too long: 1531
原因是MINA设置的行解码器长度太小,默认的才1024,必须增大其长度; 代码如下.
TextLineCodecFactory lineCodec=new TextLineCodecFactory(Charset.forName("UTF-8"));
Java代码
// 协议解析,采用mina现成的UTF-8字符串处理方式 TextLineCodecFactory lineCodec = new TextLineCodecFactory(Charset.forName("UTF-8"), LineDelimiter.WINDOWS.getValue(), LineDelimiter.WINDOWS.getValue());lineCodec.setDecoderMaxLineLength(1024*1024); //1M lineCodec.setEncoderMaxLineLength(1024*1024); //1M acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineCodec)); //行文本解析 acceptor.getFilterChain().addLast("log",new LoggingFilter()); //日志拦截
2. MINA过滤器的使用须知
2.1 TextLineCodecFactory设置这个过滤器一行一行(/r/n)的发送/读取数据2.2 ObjectSerializationCodecFactory一般发送/接收的是对象等形象,以对象形式读取***2.3 测试之中发现, 无法通过MINA框架与普通tcp直接对象序列化传递, 跟踪发现MINA对object进行了封装(加入了报文头), 无法让普通tcp进行序列化, 只有应用MINA框架才能反序列化构建对象***
这两天在项目中遇到个问题:
java服务端用mina发送接收数据,android客户端也用的mina,但是ios不是,以至于在后面的一些改动中出现错误始终没办法解决。
异常信息:
这个错误的本质是服务器端跟客户端的字符结束符不一致,解析方式不一样造成的。
一般通用的socket解析方式的字符结束符都是以/r/n 结束的,但ObjectSerializationCodecFactory不是,所以最后只能改成TextLineCodecFactory来使用,故遵循了上面2.3的解释,只有应用mina框架才能反序列化构建对象,因为才知道了问题的根本原因所以。
参考:(http://tcspecial.iteye.com/blog/1545452)
0 0
- Mina常见异常
- 使用mina传递对象注意问题点以及常见报错异常处理
- Socket异常与MINA异常
- Mina架构的异常问题......
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- 鸟哥的Linux私房菜(服务器)- 第二十二章、邮件服务器: Postfix
- eclipse中的java工程项目如何引用外部jar包和dll动态链接库?
- 鸟哥的Linux私房菜(服务器)- 簡易 APT/YUM 伺服器設定
- 【easyui】combobox 关于省市联动
- 鸟哥的Linux私房菜(服务器)- 簡易 OpenWebMail 設定
- Mina常见异常
- Jsp与Servlet的关系
- 鸟哥的Linux私房菜(服务器)- 簡易 Cluster 架設
- UVA Help is needed for Dexter 11384 (递归)
- 使用超终端连接Cisco 2950交换机步骤,通过console口
- 鸟哥的Linux私房菜(服务器)- 架站文件習題解答篇
- kali linux aircrack-ng 破解wifi 使用记录
- ubuntu下配置java环境(教女朋友系列)
- B树和二叉排序树(如红黑树)、B树和B+树的区别