Слишком большое исключение - PullRequest
27 голосов
/ 05 октября 2010

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

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

Ответы [ 17 ]

34 голосов
/ 05 октября 2010

Попробуйте установить свойства системы с помощью jetty.xml

    <Call class="java.lang.System" name="setProperty">
      <Arg>org.mortbay.jetty.Request.maxFormContentSize</Arg>
      <Arg>500000</Arg>
    </Call>

хорошо, вы можете настроить его из своего веб-приложения

Добавьте файл 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... (Спасибо Дэвиду за его комментарий).

10 голосов
/ 05 декабря 2012
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) вы должны использовать следующий код:

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);
5 голосов
/ 19 ноября 2013

К сожалению, я не могу вносить какие-либо изменения в jetty.xml, поэтому вместо этого я просто устанавливаю некоторые параметры для настройки maxFormContentSize следующим образом:

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

Это существует в сценарии оболочки, который мы используем для запуска нашего экземпляра Solr.

4 голосов
/ 14 декабря 2011

Больше документации по размеру формы: http://wiki.eclipse.org/Jetty/Howto/Configure_Form_Size

3 голосов
/ 13 октября 2010

Я тоже сталкивался с этой проблемой (запуск Jetty встроен в другое приложение, поэтому я не использую jetty.xml).

Я использовал метод setMaxFormContentSize в классе ContextHandler, который исправилисключение "слишком большая форма".(См. http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#Setting_a_ServletContext для примера создания / использования обработчика контекста).

2 голосов
/ 30 декабря 2012
            <!-- 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

2 голосов
/ 30 ноября 2010
webappcontext.getServletContext().getContextHandler() .setMaxFormContentSize(10000000);
1 голос
/ 16 января 2013

В зависимости от того, сколько лет вы используете версию Jetty (в моем случае 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");
1 голос
/ 01 ноября 2013

Ни одно из перечисленных выше решений не сработало для меня,

Поэтому, чтобы выполнить эту работу, я настраивал системное свойство перед созданием сервера, а не устанавливал его как атрибут сервера

 System.setProperty("org.eclipse.jetty.server.Request.maxFormContentSize", "500000000");

 Server server = ServerFactory.createServer(host, port, contextPath, war);
1 голос
/ 10 июля 2015

Я использую причал 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>
  • configure jetty.xml

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