forms太大exception

当我使用post请求发送大文件时,系统显示exception:

java.lang.IllegalStateException: Form too large1105723>200000 at org.mortbay.jetty.Request.extractParameters(Request.java:1404) at org.mortbay.jetty.Request.getParameter(Request.java:749)...... 

当我在谷歌搜索帮助时,他们会提供一些帮助,例如webappcontext.setMaxFormContentSize(5000000);

我正在使用此代码但问题仍未解决

我也使用代码jettyServer.setAttribute("org.mortbay.jetty.Request.maxFormContentSize", 5000000);

但没有结果

注意: – 我正在使用Jetty-6.1.0

尝试通过jetty.xml设置系统属性

   org.mortbay.jetty.Request.maxFormContentSize 500000  

好的,你可以从你的网络应用程序配置它

在Web应用程序中添加WEB-INF / jetty-web.xml文件,并在该文件中配置参数:

     600000  

文件

版本7或更高版本

从版本7开始,Jetty的类已转移到另一个包中。 你必须用org.eclipse...替换org.mortbay... (感谢David的评论)。

 import org.mortbay.jetty.Server; //... other code here...// int port = 8080; Server server = new Server(port); server.setAttribute("org.mortbay.jetty.Request.maxFormContentSize", -1); 

这段代码适用于我正在使用的jetty 6.0.2。
大小“-1”表示表单没有限制我试图发布一个大的20,000,000字节的表单,我没有问题。
对于Jetty(jetty 7)的eclipse版本,您必须使用以下代码:

 import org.eclipse.jetty.server.Server; //... other code here...// int port = 8080; Server server = new Server(port); server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", -1); 

不幸的是,我无法对jetty.xml进行任何更改,所以我只是设置一些选项来调整maxFormContentSize,如下所示:

 JVM_OPTS="$JVM_OPTS -Dorg.eclipse.jetty.server.Request.maxFormContentSize=5000000" 

这存在于我们用于启动Solr实例的shell脚本中。

有关表单大小的更多文档: http : //wiki.eclipse.org/Jetty/Howto/Configure_Form_Size

我也遇到了这个问题(在另一个应用程序中运行Jetty,所以我没有使用jetty.xml)。

我在ContextHandler类上使用了setMaxFormContentSize方法,该方法修复了“表单太大”的exception。 (有关创建/使用上下文处理程序的示例,请参阅http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#Setting_a_ServletContext )。

 webappcontext.getServletContext().getContextHandler() .setMaxFormContentSize(10000000); 
    org.mortbay.jetty jetty-maven-plugin 8.1.8.v20121106  1  /${project.build.finalName}    org.eclipse.jetty.server.Request.maxFormContentSize 10485760     

在maven插件中为jetty 8工作

根据您使用的Jetty版本的使用年限(在我的例子中,在Eclipse Equinox中嵌入了jetty-5.1.14),它也可能是属性需要是org.mortbay.http.HttpRequest.maxFormContentSize

来自:org.mortbay.http.HttpRequest

 /** * Max size of the form content. Limits the size of the data a client can push at the server. * Set via the org.mortbay.http.HttpRequest.maxContentSize system property. */ public static int __maxFormContentSize = Integer.getInteger( "org.mortbay.http.HttpRequest.maxFormContentSize", 200000).intValue(); 

因此,您需要在启动时在应用程序中执行以下操作来设置值:

 System.setProperty("org.mortbay.http.HttpRequest.maxFormContentSize", "10000000"); 

以上解决方案均不适合我,

因此,为了完成这项工作,我在创建服务器之前设置系统属性,而不是将其设置为服务器属性

  System.setProperty("org.eclipse.jetty.server.Request.maxFormContentSize", "500000000"); Server server = ServerFactory.createServer(host, port, contextPath, war); 

我使用jetty 9.2.3.v20140905,我修复了问题使用如下:

  • confomure pom.xml
  org.eclipse.jetty jetty-maven-plugin 9.2.3.v20140905   src/main/resources/jetty/jetty.xml    

可能是因为版本7以来Jetty发生了变化,但我只有这样的成功:

在jetty-web.xml中,将下面的内容添加到Server对象中(1000000是一个示例大小,obv)

  org.eclipse.jetty.server.Request.maxFormContentSize 1000000  

完整文件可能看起来像我的

   org.eclipse.jetty.server.Request.maxFormContentSize 1000000     (...) 

参考http://wiki.eclipse.org/Jetty/Howto/Configure_Form_Size

如果您从eclipse / spring运行,请将以下内容添加到vm参数-Dorg.mortbay.jetty.Request.maxFormContentSize = -1

我在ActiveMQ上遇到了类似的问题所以我不得不编辑jetty.xml并添加

   

处理程序属性。

从:-

           

            

通过添加命令行参数启动jenkins
-Dorg.eclipse.jetty.server.Request.maxFormContentSize = 500000

即java -Dorg.eclipse.jetty.server.Request.maxFormContentSize = 500000 -jar jenkins.war

如果您在嵌入模式下使用jetty,请尝试此操作。

  ServletContextHandler servletHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); servletHandler.setMaxFormContentSize(1024*1024*1024);//size you want to allow.