Netty, чтение результатов сообщения с IllegalReferenceCountgException refCnt: ​​0

Я новичок в netty и пытаюсь получить байтовый ответ от сервера (не netty). Тем не менее, я считаю, что неправильно понял и подсчитал количество ссылок. Читая ответ, я сталкиваюсь с IllegalReferenceCountException: refCnt:0

То, что я делаю, не так уж сложно. Я настраиваю клиента, затем отправляю сообщение и жду ответа.

Мой ResponseHandler выглядит так:

      public class ResponseHandler extends DriverResponseHandler
{
    private ByteBuf received;


    @Override
    public void handlerAdded(ChannelHandlerContext ctx) throws Exception
    {
        super.handlerAdded(ctx);
        received = ctx.alloc().buffer(32);
    }

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
    {
        super.channelRead(ctx, msg);
        received.writeBytes((ByteBuf) msg);
    }

    @Override
    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception
    {
        super.channelReadComplete(ctx);
        if (received.writerIndex() == received.capacity() || received.readerIndex() == received.capacity()) {
            received.clear();
            received = ctx.alloc().buffer(32);
        }
        processResponse(received);
    }
}

читая ответ в происходит исключение. Почему так происходит. Может кто-нибудь мне это объяснить?

1 ответ

Решение

Хорошо, я решил проблему. Все, что мне нужно сделать, это добавить ByteToMessageDedcoder, иначе входящий ответ никогда не будет выделен, поэтому он не будет доступен.

Другие вопросы по тегам