web-dev-qa-db-ja.com

フォームが大きすぎる例外

Postリクエストを使用して大きなファイルを送信すると、システムが例外を表示します。

_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を使用しています

28
Narendra nnvd

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以降

バージョン7以降、Jettyのクラスは別のパッケージに移動しました。 org.mortbay...org.Eclipse...に置き換える必要があります(Davidのコメントに感謝します)。

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

このコードは、私が使用している突堤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);
10

残念ながら、jetty.xmlを変更することはできません。代わりに、いくつかのオプションを設定してmaxFormContentSizeを調整します。

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

これは、Solrのインスタンスを起動するために使用するシェルスクリプトに存在します。

5
seth

フォームサイズに関するその他のドキュメント: http://wiki.Eclipse.org/Jetty/Howto/Configure_Form_Size

4
volni

私もこの問題に遭遇しました(別のアプリケーションに組み込まれたJettyを実行しているため、jetty.xmlを使用していません)。

「フォームが大きすぎる」例外を修正したsetMaxFormContentSizeクラスでContextHandlerメソッドを使用しました。 (コンテキストハンドラーの作成/使用の例については http://wiki.Eclipse.org/Jetty/Tutorial/Embedding_Jetty#Setting_a_ServletContext を参照してください)。

3
Ash
            <!-- 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のために働く

2
Timmy Chiu
webappcontext.getServletContext().getContextHandler() .setMaxFormContentSize(10000000);
2
Narendra nnvd

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 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>
1
guvivi

上記の解決策のどれも私にとってうまくいきませんでした、

したがって、これを機能させるために、サーバー属性として設定するのではなく、サーバーを作成する前にシステムプロパティを設定します。

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

 Server server = ServerFactory.createServer(Host, port, contextPath, war);

使用している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");
1
Christoph

Springブートを使用し、application.propertiesにserver.jetty.max-http-post-size: maxSizeを設定して修正します。

server.jetty.max-http-post-size: 500000
0
Ryze

おそらくバージョン7以降のJettyの変更が原因ですが、私はそのような成功しかありませんでした:

jetty-web.xmlで、以下をサーバーオブジェクトに追加します(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

0
jsh

コマンドライン引数を追加してジェンキンスを起動する
-Dorg.Eclipse.jetty.server.Request.maxFormContentSize = 500000

つまり、Java -Dorg.Eclipse.jetty.server.Request.maxFormContentSize = 500000 -jar jenkins.war

0
Manoj

ActiveMQ:

ここでの問題は、ActiveMQのベースとなっているJettyにあります。詳細はこちら ドキュメント

ソリューションはApache-activemq-5.9.0/bin/win64/wrapper.confファイルにあり、次の行を追加しますabの後(下記参照)。

  • awrapper.Java.additional.16=-Dorg.Eclipse.jetty.server.Request.maxFormContentSize=1000000
  • bwrapper.Java.additional.15=-Djava.security.auth.login.config=%ACTIVEMQ_CONF%/login.config

32ビットコンピュータで実行している場合は、Apache-activemq-5.9.0/bin/win32/wrapper.confに同じ行を追加してください。

ハッピーコーディング...

0

組み込みモードで突堤を使用する場合は、これを試してください。

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

Eclipse/Springから実行している場合は、以下をvm引数に追加します-Dorg.mortbay.jetty.Request.maxFormContentSize = -1

0
C oneil

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>
0
user2306718