MINA 2.0.1 异常: line is too long

1. MINA传递大文本时, 会出现异常: org.apache.mina.common.BufferDataException: Line is too long: 1531 

原因是MINA设置的行解码器长度太小,默认的才1024,必须增大其长度; 代码如下.

TextLineCodecFactory lineCodec=new TextLineCodecFactory(Charset.forName("UTF-8")); 

		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框架才能反序列化构建对象

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值