org.jboss.netty.handler.codec.frame.TooLongFrameException: An HTTP line is larger than 4096 bytes.

"이희승 (Trustin Lee)" trustin at gmail.com
Tue Nov 23 00:34:29 EST 2010


It's complaining that the HTTP header is longer than 4096 characters.
You can increase the limit when you construct a HttpMessageDecoder.

flz_87 at 163.com wrote:
> Hi,I find some difficulties transferring large amounts of data,I get the following errors:
> 警告: Unexpected exception from downstream.
> org.jboss.netty.handler.codec.frame.TooLongFrameException: An HTTP line is larger than 4096 bytes.
> 	at org.jboss.netty.handler.codec.http.HttpMessageDecoder.readLine(HttpMessageDecoder.java:592)
> 	at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:191)
> 	at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:107)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:471)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:542)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelDisconnected(ReplayingDecoder.java:450)
> 	at org.jboss.netty.channel.Channels.fireChannelDisconnected(Channels.java:360)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:587)
> 	at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
> 	at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
> 	at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:60)
> 	at org.jboss.netty.handler.stream.ChunkedWriteHandler.handleDownstream(ChunkedWriteHandler.java:114)
> 	at org.jboss.netty.channel.Channels.close(Channels.java:720)
> 	at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:208)
> 	at org.jboss.netty.channel.ChannelFutureListener$1.operationComplete(ChannelFutureListener.java:46)
> 	at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> 	at org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> 	at Echo.EchoServerHandler.sendHttpResponse(EchoServerHandler.java:173)
> 	at Echo.CassaOperator.do_PUT(CassaOperator.java:54)
> 	at Echo.EchoServerHandler.messageReceived(EchoServerHandler.java:147)
> 	at org.jboss.netty.handler.stream.ChunkedWriteHandler.handleUpstream(ChunkedWriteHandler.java:144)
> 	at org.jboss.netty.handler.codec.http.HttpContentEncoder.messageReceived(HttpContentEncoder.java:83)
> 	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
> 	at org.jboss.netty.handler.codec.http.HttpChunkAggregator.messageReceived(HttpChunkAggregator.java:158)
> 	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:516)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:507)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:444)
> 	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
> 	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)
> 	at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> 2010-11-1 20:35:36 Echo.EchoServerHandler exceptionCaught
> 警告: Unexpected exception from downstream.
> org.jboss.netty.handler.codec.frame.TooLongFrameException: An HTTP line is larger than 4096 bytes.
> 	at org.jboss.netty.handler.codec.http.HttpMessageDecoder.readLine(HttpMessageDecoder.java:592)
> 	at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:191)
> 	at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:107)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:471)
> 	at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:444)
> 	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
> 	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:281)
> 	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201)
> 	at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 	at java.lang.Thread.run(Unknown Source)
> some codes are following:
>  public class EchoServer {  
>       public static void main(String[] args) throws Exception {
>     	  System.out.print("server start!\n");
>           // Configure the server.
>           ServerBootstrap bootstrap = new ServerBootstrap(
>                   new NioServerSocketChannelFactory(
>                           Executors.newCachedThreadPool(),
>                           Executors.newCachedThreadPool()));
>   
>           // Set up the pipeline factory.
>           bootstrap.setPipelineFactory(new EchoServerFactory());
>   
>           // Bind and start to accept incoming connections.
>           bootstrap.bind(new InetSocketAddress(8585));
>       }
>   }
> public class EchoServerFactory implements ChannelPipelineFactory {
>       public ChannelPipeline getPipeline() throws Exception {
>           // Create a default pipeline implementation.
>          ChannelPipeline pipeline = pipeline();
>          pipeline.addLast("decoder", new HttpRequestDecoder());
>           // Uncomment the following line if you don't want to handle HttpChunks.
>           pipeline.addLast("aggregator", new HttpChunkAggregator(1000000000));
>           pipeline.addLast("encoder", new HttpResponseEncoder());
>          // Remove the following line if you don't want automatic content compression.
>           pipeline.addLast("deflater", new HttpContentCompressor());
>           pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());
>          pipeline.addLast("handler", new EchoServerHandler());
>          return pipeline;
>      }
> Handler code:
> public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
> 	          HttpRequest request = this.request = (HttpRequest) e.getMessage();
> 	          Map<String,String> headers = new HashMap();
> 	          if(!request.getHeaderNames().isEmpty()) {
> 	              for(String name: request.getHeaderNames()) {
> 	                  for(String value: request.getHeaders(name)) {
> 	                      System.out.println("HEADER: " + name + "=" + value);
> 	                      headers.put(name, value);
> 	                  }
> 	              }
> 	              System.out.println();
> 	          }//解析Header并输出
> 	          System.out.println("content  lenth: " + request.getContentLength() + "#######");
> 	          final String path = request.getUri();
> 	          System.out.println("PATH: " + path);//解析path并输出
> 	          HttpMethod method = request.getMethod();
> 	          System.out.println("METHOD: " + method);//解析method并输出
> 	          //request.
> 	         ChannelBuffer content =request.getContent();
> 
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users

-- 
Trustin Lee - http://gleamynode.net/


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 290 bytes
Desc: OpenPGP digital signature
Url : http://lists.jboss.org/pipermail/netty-users/attachments/20101123/f411f096/attachment.bin 


More information about the netty-users mailing list