code: @Override
  	public final void channelRead(ChannelHandlerContext ctx, Object msg)throws Exception 
  	{
  		if (msg == null) 
  		{
  			return;
  		}
  		boolean release = false;
  		try {
  			@SuppressWarnings("unchecked")
  			M imsg = (M) msg;
  			Channel channel=ctx.channel();
  			JConnection connection = findConnection(channel);
  			if (connection != null) {
  				listener.messageArrived(connection, imsg);
  				release = true;
  			} else {
  				log.error(ctx.channel() + ":not found NettyConnection Created.");
  				ctx.fireChannelRead(msg);// 下一个handler继续处理
  				release = false;
  			}
  		} catch (Exception e) {
  			log.error(e.getMessage(),e);
  			if(!release)
  			{//如果出错且还没有被释放
  				ctx.fireChannelRead(msg);// 下一个handler继续处理
  			}
  		} finally {
  			if (release) {
  				ReferenceCountUtil.release(msg);
  			}
  		}
  	}
docs: 到达业务线程后需要注意msg被释放的问题