Подтвердить что ты не робот

Форма слишком большого исключения

Когда я отправляю большой файл с использованием почтового запроса, система показывает исключение:

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

4b9b3361

Ответ 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.

Ответ 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, и я исправил проблему, используя следующую команду:

  • confiure pom.xml

<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.

Удачного кодирования..