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