Netty: ошибка с длиной содержимого HTTP более 64 КБ

Я получаю данные JSON из клиентского приложения, но время от времени длина содержимого HTTP превышает 64 КБ, и я получаю следующую ошибку:

org.jboss.netty.handler.codec.frame.TooLongFrameException: HTTP content length exceeded 65536 bytes.

В настоящее время у меня есть следующая, довольно наивная реализация для чтения содержимого HTTP:

String requestContent = null;
HttpRequest request = (HttpRequest) e.getMessage();
ChannelBuffer content = request.getContent();
if (content.readable()) {
    requestContent = content.toString(CharsetUtil.UTF_8);
}

Есть ли способ включить получение более 64 КБ данных?

Редактировать: Трассировка стека:

Aug 31, 2012 2:35:20 PM org.jboss.netty.channel.SimpleChannelUpstreamHandler
WARNING: EXCEPTION, please implement org.eurekaj.manager.server.router.RouterHandler.exceptionCaught() for proper handling.
org.jboss.netty.handler.codec.frame.TooLongFrameException: HTTP content length exceeded 65536 bytes.
at org.jboss.netty.handler.codec.http.HttpChunkAggregator.messageReceived(HttpChunkAggregator.java:130)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
at org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndFireMessageReceived(ReplayingDecoder.java:593)
at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:584)
at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:509)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:94)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:372)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:246)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:38)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

Это снова вызывает следующую ошибку в моем приложении, которая указывает, что из HTTP-запроса считываются только первые 64 КБ данных:

Caused by: org.json.JSONException: Unterminated string at character 65537
at org.json.JSONTokener.syntaxError(JSONTokener.java:410)
at org.json.JSONTokener.nextString(JSONTokener.java:244)

person Joachim H. Skeie    schedule 31.08.2012    source источник
comment
Не могли бы вы опубликовать полную трассировку стека?   -  person Norman Maurer    schedule 31.08.2012
comment
Отредактировал исходный пост с трассировкой стека.   -  person Joachim H. Skeie    schedule 31.08.2012


Ответы (1)


Хорошо, затем укажите другую максимальную длину содержимого в конструкторе HttpChunkAggregator. Это должно делать свое дело..

person Norman Maurer    schedule 31.08.2012