当我使用发布请求发送大文件时,系统会显示异常:
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
答案 0 :(得分:34)
尝试通过jetty.xml
<Call class="java.lang.System" name="setProperty">
<Arg>org.mortbay.jetty.Request.maxFormContentSize</Arg>
<Arg>500000</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">600000</Set>
</Configure>
从版本7开始,Jetty的类已转移到另一个包中。您必须将org.mortbay...
替换为org.eclipse...
(感谢David的评论)。
答案 1 :(得分:10)
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);
答案 2 :(得分:5)
不幸的是,我无法对jetty.xml进行任何更改,所以我只是设置一些选项来调整maxFormContentSize,如下所示:
JVM_OPTS="$JVM_OPTS -Dorg.eclipse.jetty.server.Request.maxFormContentSize=5000000"
这存在于我们用于启动Solr实例的shell脚本中。
答案 3 :(得分:4)
答案 4 :(得分:3)
我也遇到了这个问题(在另一个应用程序中运行Jetty,所以我没有使用jetty.xml)。
我在setMaxFormContentSize
类上使用了ContextHandler
方法,该方法修复了“表单太大”的异常。 (有关创建/使用上下文处理程序的示例,请参阅http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#Setting_a_ServletContext。)
答案 5 :(得分:2)
<!-- Development Jetty -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.8.v20121106</version>
<configuration>
<scanIntervalSeconds>1</scanIntervalSeconds>
<webApp>
<contextPath>/${project.build.finalName}</contextPath>
</webApp>
<systemProperties>
<systemProperty>
<name>org.eclipse.jetty.server.Request.maxFormContentSize</name>
<value>10485760</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
为maven插件中的jetty 8工作
答案 6 :(得分:2)
webappcontext.getServletContext().getContextHandler() .setMaxFormContentSize(10000000);
答案 7 :(得分:1)
根据您使用的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");
答案 8 :(得分:1)
以上解决方案均不适合我,
因此,为了完成这项工作,我在创建服务器之前设置系统属性,而不是将其设置为服务器属性
System.setProperty("org.eclipse.jetty.server.Request.maxFormContentSize", "500000000");
Server server = ServerFactory.createServer(host, port, contextPath, war);
答案 9 :(得分:1)
我使用jetty 9.2.3.v20140905,我修复了问题使用如下:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.3.v20140905</version>
<configuration>
<jettyXml>
src/main/resources/jetty/jetty.xml
</jettyXml>
</configuration>
</plugin>
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>-1</Arg>
</Call>
</Configure>
答案 10 :(得分:0)
可能是因为自第7版以来Jetty发生了变化,但我只有这样的成功:
在jetty-web.xml中,将下面的内容添加到Server对象中(1000000是一个示例大小,obv)
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>1000000</Arg>
</Call>
完整文件可能看起来像我的
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>1000000</Arg>
</Call>
<Ref id="DeploymentManager">
<Call id="webappprovider" name="addAppProvider">
<Arg>
(...)
答案 11 :(得分:0)
如果您从eclipse / spring运行,请将以下内容添加到vm参数中 -Dorg.mortbay.jetty.Request.maxFormContentSize = -1
答案 12 :(得分:0)
我在ActiveMQ上遇到了类似的问题,所以我不得不编辑jetty.xml并添加
<property name="maxFormContentSize" value="-1" />
到处理程序属性。
自: -
<property name="handler">
<bean id="sec" class="org.eclipse.jetty.server.handler.HandlerCollection">
<property name="handlers">
<list>
<bean class="org.eclipse.jetty.webapp.WebAppContext">
<property name="contextPath" value="/admin" />
<property name="resourceBase" value="${activemq.home}/webapps/admin" />
<property name="logUrlOnStart" value="true" />
</bean>
到
<property name="handler">
<bean id="sec" class="org.eclipse.jetty.server.handler.HandlerCollection">
<property name="handlers">
<list>
<bean class="org.eclipse.jetty.webapp.WebAppContext">
<property name="contextPath" value="/admin" />
<property name="resourceBase" value="${activemq.home}/webapps/admin" />
<property name="logUrlOnStart" value="true" />
<property name="maxFormContentSize" value="-1" />
</bean>
答案 13 :(得分:0)
通过添加命令行参数
来启动jenkins
-Dorg.eclipse.jetty.server.Request.maxFormContentSize = 500000
即java -Dorg.eclipse.jetty.server.Request.maxFormContentSize = 500000 -jar jenkins.war
答案 14 :(得分:0)
如果您在嵌入模式下使用jetty,请尝试此操作。
ServletContextHandler servletHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletHandler.setMaxFormContentSize(1024*1024*1024);//size you want to allow.
答案 15 :(得分:0)
我使用Spring boot并在application.properties中设置server.jetty.max-http-post-size: maxSize
进行修复。
server.jetty.max-http-post-size: 500000
答案 16 :(得分:0)
ActiveMQ:
我知道这个问题很老,但是由于某些人可能仍会在此版本的ActiveMQ中遇到此问题(就像今天发生在我身上的那样),因此我将在此发布的解决方案寄希望于此,希望对您有所帮助其他使用网络搜索为该异常找到解决方案的用户:
首先,“问题”是由ActiveMQ所基于的Jetty引起的。在这里,您可以找到有关在Jetty中配置表单大小参数的更多文档:http://wiki.eclipse.org/Jetty/Howto/Configure_Form_Size
不幸的是,不清楚在ActiveMQ中的何处进行配置。我尝试在apache-activemq-5.9.0 / webapps / admin / WEB-INF内创建一个jetty-web.xml文件,但是没有用。
最后,我的解决方案是编辑apache-activemq-5.9.0 / bin / win64 / wrapper.conf并在wrapper.java.additional.15 = -Djava.security.auth.login.config之后添加以下行=%ACTIVEMQ_CONF%/ login.config
wrapper.java.additional.16 = -Dorg.eclipse.jetty.server.Request.maxFormContentSize = 1000000
如果您在32位计算机上运行,请在apache-activemq-5.9.0 / bin / win32 / wrapper.conf中添加同一行
答案 17 :(得分:0)
在 jetty/webapps
中设置 -> 配置 .xml
(例如 jetty-web.xml
)文件
"-1"
无限内容
<Set name="maxFormContentSize" type="int">600000</Set>
或
<Set name="maxFormContentSize" type="int">-1</Set>