zoukankan      html  css  js  c++  java
  • Jetty错误: badMessage: java.lang.IllegalStateException: too much data after closed for HttpChannelOverHttp@472adad9{r=2,c=false,a=IDLE,uri=}

    最近用Jetty跑Spring MVC接收POST请求(POST中数据很大)。出现数据无法获取到的问题。如:

    @RequestMapping(value = "/receive", method = RequestMethod.POST)
    public receive(String a,String b,String c) 

    其中a是从POST中获取,先前数据量小的时候,可以取到没有问题。 

    用抓包工具看,发现POST数据没发完就HTTP就返回了。这点很奇怪

    调大下面的参数值:

          <Set name="outputBufferSize"><Property name="jetty.output.buffer.size" default="32768" /></Set>
          <Set name="requestHeaderSize"><Property name="jetty.request.header.size" default="8192" /></Set>
          <Set name="responseHeaderSize"><Property name="jetty.response.header.size" default="8192" /></Set>
          <Set name="headerCacheSize">512</Set>

    改了很大,10倍的增加,结果too much  data不报了,可是依然还是取不到要的参数。调得很大还有内存溢出,还得调小其他参数,如线程数。

    改变方式修改Content-Type为 application/x-www-form-urlencoded 或multipart/form-data,一样没有效果。

    试过多种方式后,使用@RequestBody注解了a,结果,成功了。而且不需要调整jetty的参数。

    为什么用@RequestBody? 

    @RequestBody 

    作用: 

    1. 该注解用于读取Request请求的Body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
    2. 再把HttpMessageConverter返回的对象数据绑定到Controller中方法的参数上。

    使用时机:

    A) GET、POST方式提时, 根据Request Header Content-Type的值来判断:

    •     application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
    •     multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
    •     其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

    B) PUT方式提交时, 根据Request Header Content-Type的值来判断:

    •     application/x-www-form-urlencoded, 必须;
    •     multipart/form-data, 不能处理;
    •     其他格式, 必须;

    说明:Request的Body部分的数据编码格式由Header部分的Content-Type指定;

    参考:

    http://blog.csdn.net/arsenal04/article/details/41484685(以上内容转自此篇文章,先记录一下先,待解决)

    https://stackoverflow.com/questions/29527803/eliminating-or-understanding-jetty-9s-illegalstateexception-too-much-data-aft

  • 相关阅读:
    16级第三周寒假作业F题
    16级第三周寒假作业E题
    16级第二周寒假作业J题
    16级第二周寒假作业B题
    16级第一周寒假作业D题
    16级第一周寒假作业F题
    Drupal8 社区文档之Drupal的概述
    Drupal 社区文档之一般概念
    Drupal 8 目录结构
    PhpExcel中文帮助手册|PhpExcel使用方法
  • 原文地址:https://www.cnblogs.com/EasonJim/p/8295811.html
Copyright © 2011-2022 走看看