`

Jetty提交数据时报java.lang.IllegalStateException: Form too large270468>200000问题解决

阅读更多
今天在使用Eclipse的Jetty插件做为服务器提交富文本编辑中的数据时,报如下异常:
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)

很明显是单个请求数据过大,Form too large>200000(200000即200000Byte约为2M),但异常是在什么地方抛出来的呢,经过一番研究,发现是Jetty插件报出的如下:
在\eclipse\plugins目录下,找到org.mortbay.jetty.server_6.1.23.v201012071420.jar包,扔进JD-GUI中,根据报错提示信息org.morbay.jetty.Request.extractParameters()方法中找到如下信息:


注意观察箭头所示部分,异常应该是这儿抛出来的,但maxFormContentSize值是从那里来的呢,依据this._context.getContextHandler().getMaxFormContentSize()这句提示,找到org.mortbay.jetty.handlerContextHandler.class类,结果发现该类中有如下一句,兴奋,默认值在此。


那么这个默认值是设置好的,如何修改呢,通过看Request类里的this._context.getContextHandler().getMaxFormContentSize()代码,继续追踪,该值应该是从WEB的入口获取的即web.xml,但是这个值如何传进去呢,经过网上的搜索与实践,可以在WEB-INF目录下新建一个jetty-web.xml文件,里面写如下内容,对maxFormContentSize重新赋值即可(Jetty6适用):
<?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">600000</Set>  
  </Configure> 


重新启动web应用,再次提交数据,发现可以正常提交了,到此,问题圆满解决。
那么其它服务器有没有类似情况,答案当然是肯定的,如Tomcat,通过搜索找到了如下内容:
Q: In Tomcat, I got a "Post data too big" error.
A: Apache Tomcat by default sets a limit on the maximum size of HTTP POST requests it accepts.
   In Tomcat 5, this limit is set to 2097152 (2 Mb). When you try to upload files or post forms that are
   larger than 2 MB, this error can occur.
   The solution is to reconfigure Tomcat to accept larger POST requests, either by increasing
   the limit, or by disabling it. This can be done by editing Tomcat's server.xml.
   In the <Connector> element, add an attribute "maxPostSize" and set a larger value (in bytes) to
   increase the limit. Setting it to 0 will disable the size check.
意思是说,tomcat默认设置能接收HTTP POST请求的大小最大为2M,如果你的POST请求传递的数据大于2M,就会报这个错误.解决的办法是修改tomcat的配置文件$TOMCAT_HOME$/conf/server.xml,找到里面的<Connector>标签,在该标签中添加"maxPostSize"属性,将该属性值设置成你想要的最大值,单位是字节,如果你把这个值设置为0(maxPostSize="0"),tomcat将不再检查POST的大小.
  • 大小: 19 KB
  • 大小: 19.6 KB
分享到:
评论

相关推荐

    java.lang.NoClassDefFoundError: javax/persistence/EntityListener

    标题 "java.lang.NoClassDefFoundError: javax/persistence/EntityListener" 提到的问题是一个常见的Java运行时异常,通常表示在类加载时找不到指定的类定义。这个错误在Java应用程序或Web应用中出现,可能是因为...

    java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource

    在Java编程中,`java.lang.ClassNotFoundException`是一个常见的运行时异常,它表示JVM尝试加载一个类时,找不到对应的.class文件。在这个特定的错误中,我们看到的是`org.apache.commons.dbcp.BasicDataSource`,这...

    jetty-io-9.4.43.v20210629-API文档-中英对照版.zip

    赠送jar包:jetty-io-9.4.43.v20210629.jar; 赠送原API文档:jetty-io-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-io-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-io-9.4.43.v20210629....

    jetty-http-9.4.11.v20180605-API文档-中英对照版.zip

    赠送jar包:jetty-http-9.4.11.v20180605.jar; 赠送原API文档:jetty-http-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-http-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-...

    java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider

    在Java编程中,`java.lang.NoClassDefFoundError` 是一个常见的运行时异常,它发生在类加载器尝试加载一个在编译时存在但在运行时找不到的类定义时。这个错误通常意味着类路径设置不正确或者依赖项没有正确地被包含...

    jetty-client-9.4.43.v20210629-API文档-中文版.zip

    赠送jar包:jetty-client-9.4.43.v20210629.jar; 赠送原API文档:jetty-client-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-client-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-client-...

    jetty-http-9.4.43.v20210629-API文档-中英对照版.zip

    赠送jar包:jetty-http-9.4.43.v20210629.jar; 赠送原API文档:jetty-http-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-http-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-...

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    Maven坐标:org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016; 标签:eclipse、jetty、orbit、javax、servlet、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

    jetty-security-9.3.19.v20170502-API文档-中文版.zip

    赠送jar包:jetty-security-9.3.19.v20170502.jar; 赠送原API文档:jetty-security-9.3.19.v20170502-javadoc.jar; 赠送源代码:jetty-security-9.3.19.v20170502-sources.jar; 赠送Maven依赖信息文件:jetty-...

    jetty-client-9.4.11.v20180605-API文档-中文版.zip

    赠送jar包:jetty-client-9.4.11.v20180605.jar; 赠送原API文档:jetty-client-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-client-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-client-...

    javax.servlet-3.0.0.v201112011016-API文档-中英对照版.zip

    Maven坐标:org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016; 标签:eclipse、jetty、orbit、javax、servlet、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html...

    jetty-util-9.4.43.v20210629-API文档-中文版.zip

    赠送jar包:jetty-util-9.4.43.v20210629.jar; 赠送原API文档:jetty-util-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-util-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-util-9.4.43.v...

    jetty-server-8.1.8.v20121106-API文档-中文版.zip

    赠送jar包:jetty-server-8.1.8.v20121106.jar; 赠送原API文档:jetty-server-8.1.8.v20121106-javadoc.jar; 赠送源代码:jetty-server-8.1.8.v20121106-sources.jar; 赠送Maven依赖信息文件:jetty-server-8.1.8...

    jetty-server-8.1.8.v20121106-API文档-中英对照版.zip

    赠送jar包:jetty-server-8.1.8.v20121106.jar; 赠送原API文档:jetty-server-8.1.8.v20121106-javadoc.jar; 赠送源代码:jetty-server-8.1.8.v20121106-sources.jar; 赠送Maven依赖信息文件:jetty-server-8.1.8...

    jetty-io-9.4.43.v20210629-API文档-中文版.zip

    赠送jar包:jetty-io-9.4.43.v20210629.jar; 赠送原API文档:jetty-io-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-io-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-io-9.4.43.v20210629....

    jetty-server-9.4.8.v20171121-API文档-中文版.zip

    赠送jar包:jetty-server-9.4.8.v20171121.jar; 赠送原API文档:jetty-server-9.4.8.v20171121-javadoc.jar; 赠送源代码:jetty-server-9.4.8.v20171121-sources.jar; 赠送Maven依赖信息文件:jetty-server-9.4.8...

    jetty-all-7.6.0.v20120127-API文档-中文版.zip

    Maven坐标:org.eclipse.jetty.aggregate:jetty-all:7.6.0.v20120127; 标签:all、jetty、eclipse、aggregate、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,...

    jetty.project-jetty-9.4.35.v20201120.rar

    标题中的"jetty.project-jetty-9.4.35.v20201120.rar"指的是Jetty项目的9.4.35版本,发布于2020年11月20日。这个压缩包包含了该版本的所有源码、编译后的类库以及相关的配置文件。 在Java Web开发中,Servlet容器是...

    jetty-distribution-9.4.36.v20210114.zip

    9. **bin**: 这个目录包含了一些操作系统特定的脚本,如`jetty.sh`和`jetty.cmd`,用于在不同的平台上启动和停止Jetty服务。 如果你使用的是Java集成开发环境(IDE),如IntelliJ IDEA或Eclipse,可以利用这些工具...

    jetty-util-9.4.11.v20180605-API文档-中文版.zip

    赠送jar包:jetty-util-9.4.11.v20180605.jar; 赠送原API文档:jetty-util-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-util-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-util-9.4.11.v...

Global site tag (gtag.js) - Google Analytics