Форма слишком большого исключения
Когда я отправляю большой файл с использованием почтового запроса, система показывает исключение:
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)......
При поиске справки в Google они дают некоторую помощь, например, webappcontext.setMaxFormContentSize(5000000);
Я использую этот код, но проблема не решена.
Также я использую код jettyServer.setAttribute("org.mortbay.jetty.Request.maxFormContentSize", 5000000);
Но никакого результата
Примечание: -Я использую Jetty-6.1.0
Ответы
Ответ 1
Попробуйте настроить свойства системы через jetty.xml
<Call class="java.lang.System" name="setProperty">
<Arg>org.mortbay.jetty.Request.maxFormContentSize</Arg>
<Arg>500000</Arg>
</Call>
ok вы можете настроить его из своего веб-приложения
Добавить веб-приложение 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 или выше
Начиная с версии 7 классы Jetty переместились в другой пакет. Вы должны заменить org.mortbay...
на org.eclipse...
(спасибо Дэвиду за его комментарий).
Ответ 2
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 байт, и у меня не было проблем.
Для выпусков eclipse Jetty (причал 7) вы должны использовать следующий код:
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);
Ответ 3
К сожалению, я не могу вносить какие-либо изменения в jetty.xml, поэтому вместо этого я просто устанавливаю некоторые параметры для настройки maxFormContentSize следующим образом:
JVM_OPTS="$JVM_OPTS -Dorg.eclipse.jetty.server.Request.maxFormContentSize=5000000"
Это существует в оболочке script, которую мы используем для запуска нашего экземпляра Solr.
Ответ 4
Дополнительная документация по размеру формы: http://wiki.eclipse.org/Jetty/Howto/Configure_Form_Size
Ответ 5
Я тоже сталкивался с этой проблемой (запуск Jetty встроен в другое приложение, поэтому я не использую jetty.xml).
Я использовал метод setMaxFormContentSize
в классе ContextHandler
, который исправил исключение "слишком большая форма". (См. http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#Setting_a_ServletContext для примера создания/использования обработчика контекста).
Ответ 6
webappcontext.getServletContext().getContextHandler() .setMaxFormContentSize(10000000);
Ответ 7
<!-- 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>
Работа для причала 8 в плагине maven
Ответ 8
В зависимости от того, сколько лет используется ваша Jetty Version (в моем случае jetty-5.1.14, встроенной в Eclipse Equinox), также может быть, что свойство должно быть 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");
Ответ 9
Ни одно из вышеперечисленных решений не помогло мне,
Итак, чтобы выполнить эту работу, я установил свойство системы перед созданием сервера, а не устанавливал его как атрибут сервера
System.setProperty("org.eclipse.jetty.server.Request.maxFormContentSize", "500000000");
Server server = ServerFactory.createServer(host, port, contextPath, war);
Ответ 10
Я использую 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>
Ответ 11
Возможно, из-за изменений в Jetty с версии 7, но у меня был только такой успех:
в 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>
(...)
ref http://wiki.eclipse.org/Jetty/Howto/Configure_Form_Size
Ответ 12
Если вы работаете с eclipse/spring, добавьте ниже аргументы vm
-Dorg.mortbay.jetty.Request.maxFormContentSize = -1
Ответ 13
Я столкнулся с аналогичной проблемой в 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>
to
<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>
Ответ 14
Запустите jenkins, добавив аргумент командной строки
-Dorg.eclipse.jetty.server.Request.maxFormContentSize = 500000
i.e java -Dorg.eclipse.jetty.server.Request.maxFormContentSize = 500000 -jar jenkins.war
Ответ 15
Если вы используете причал в встроенном режиме, попробуйте это.
ServletContextHandler servletHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletHandler.setMaxFormContentSize(1024*1024*1024);//size you want to allow.
Ответ 16
Спасибо всем за ответы. Мне очень помогло :)
@user2306718: "-1" не работает на некоторых версиях Jetty. Надо просто поставить огромное количество и работа сделана. В любом случае, спасибо за этот пример, который я искал в Context + Beans + Spring. Я действительно плохо понимаю, как настроить причал.
<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="2000000000" />
</bean>
</list>
</property>
</bean>
</property>
Ответ 17
Я использую Spring boot и устанавливаю server.jetty.max-http-post-size: maxSize
в application.properties, чтобы это исправить.
server.jetty.max-http-post-size: 500000
Ответ 18
ActiveMQ:
Проблема здесь с Jetty, на котором основан ActiveMQ. Вы можете найти более подробную информацию здесь, документация
Решение находится в apache-activemq-5.9.0/bin/win64/wrapper.conf
, добавьте следующую строку a после b (см. Ниже).
- a:
wrapper.java.additional.16=-Dorg.eclipse.jetty.server.Request.maxFormContentSize=1000000
- b:
wrapper.java.additional.15=-Djava.security.auth.login.config=%ACTIVEMQ_CONF%/login.config
Если вы работаете на 32-битном компьютере, добавьте эту же строку в apache-activemq-5.9.0/bin/win32/wrapper.conf
.
Удачного кодирования..