Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 5075|回复: 0

Jetty错误:java.lang.IllegalStateException: Form too large 270468>200000的问题解决

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-13 17:49:30 | 显示全部楼层 |阅读模式

    说明:

    1、200000单位为byte,并不是2MB,而是200KB,换算参考:https://calc.itzmx.com/

    2、这个是表单提交后长度超过了200KB造成的,除了表单Form,还有URI等长度;这类解决问题都可以针对Jetty进行下手,配置相应的参数来记性解决。

    3、如果请求经过了Nginx或者Apache这些,那么解决时要注意排查这些的影响。

    错误:

    java.lang.IllegalStateException: Form too large270468>200000
        at org.mortbay.jetty.Request.extractParameters(Request.java:1561)
        at org.mortbay.jetty.Request.getParameterMap(Request.java:870)
        at org.apache.struts2.dispatcher.Dispatcher.createContextMap(Dispatcher.java:528)
        at org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:78)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:74)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

    解决方法:

    1、普通Web项目:

    先从这个参数入手maxFormContentSize

    Jetty7:org.eclipse.jetty.server.Request.maxFormContentSize=-1
    Jetty6:org.mortbay.jetty.Request.maxFormContentSize=-1

    -1表示不限制,2000000表示2MB的限制范围。

    ①在Jetty目录下找到jetty.xml中配置:

    Jetty7:
    <Call class="java.lang.System" name="setProperty">  
      <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>  
      <Arg>-1</Arg>  
    </Call>  
    Jetty6:
    <Call class="java.lang.System" name="setProperty"> <Arg>org.mortbay.jetty.Request.maxFormContentSize</Arg> <Arg>-1</Arg> </Call>

    ②在Web项目中的WEB-INF文件夹下新建一个jetty-web.xml文件

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">  
    <Configure id="WebAppContext" class="org.mortbay.jetty.webapp.WebAppContext">  
         <Set name="maxFormContentSize" type="int">6000000</Set>  
    </Configure> 

    2、针对Maven的Jetty插件运行的配置

    Maven Jetty Plugin 6.x
    <plugin>  
        <groupId>org.mortbay.jetty</groupId>  
        <artifactId>maven-jetty-plugin</artifactId>  
        <jetty.version>6.1.25</jetty.version>  
        <configuration>  
            <!-- 增加systemProperties属性 -->  
            <systemProperties>  
                <systemProperty>  
                    <name>org.mortbay.jetty.Request.maxFormContentSize</name>  
                    <!-- -1代表不作限制 -->  
                    <value>-1</value>  
                </systemProperty>  
            </systemProperties>  
        </configuration>  
    </plugin>  
    或者可以使用运行时给出参数的方式进行设置 
    jetty:run -Dorg.mortbay.jetty.Request.maxFormContentSize=-1  
    
    Maven Jetty Plugin 7.x情况下 
    <plugin>  
        <groupId>org.mortbay.jetty</groupId>  
        <artifactId>maven-jetty-plugin</artifactId>  
        <jetty.version>6.1.25</jetty.version>  
        <configuration>  
            <!-- 增加systemProperties属性 -->  
            <systemProperties>  
                <systemProperty>  
                    <!-- 替换成org.eclipse.jetty.server.Request.maxFormContentSize -->  
                    <name>org.eclipse.jetty.server.Request.maxFormContentSize</name>  
                    <!-- -1代表不作限制 -->  
                    <value>-1</value>  
                </systemProperty>  
            </systemProperties>  
        </configuration>  
    </plugin>  
    运行时参数方式
    jetty:run -Dorg.eclipse.jetty.server.Request.maxFormContentSize=-1  

    3、针对Spring Boot项目的配置

    经过研究,无法指定这些参数,只需配置以下方式即可:

    #POST表单长度限制(5MB)
    server.max-http-post-size=5000000

    对于Spring Boot还有很多这类相关的参数,可以通过具体需要来配置。

     

    参考:

    http://blog.csdn.net/madding/article/details/6759603

    https://www.cnblogs.com/king1302217/p/4201071.html

    http://blog.sina.com.cn/s/blog_dbc9a8040102vkcp.html

    http://ray-yui.iteye.com/blog/1929184

    https://stackoverflow.com/questions/36872540/spring-boot-rest-service-form-too-large

    https://stackoverflow.com/questions/33232849/increase-http-post-maxpostsize-in-spring-boot

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-5 20:55 , Processed in 0.063331 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表