Попытка решить "Больше, чем максимальное количество параметров запроса (GET плюс POST) для одного запроса" из контекста приложения

Я использую Spring 3.2.11.RELEASE с JBoss 7.1.3.Final. Я строю WAR-файл, и у меня есть страница, которая отправляет форму с более чем 512 параметрами. После этого я получаю следующее исключение...

20:05:03,905 ERROR [org.mainco.springboard.session.util.SessionHelper] (ajp-/127.0.0.1:8009-29) More than the maximum number of request parameters (GET plus POST) for a single request ([512]) were detected. Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.: java.lang.IllegalStateException: More than the maximum number of request parameters (GET plus POST) for a single request ([512]) were detected. Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.
        at org.apache.tomcat.util.http.Parameters.addParameter(Parameters.java:199) [jbossweb-7.0.17.Final.jar:]
        at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:383) [jbossweb-7.0.17.Final.jar:]
        at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:229) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.connector.Request.parseParameters(Request.java:2874) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.connector.Request.getParameter(Request.java:1291) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:363) [jbossweb-7.0.17.Final.jar:]
        at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:180) [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
        at org.mainco.springboard.session.util.SessionHelper.getSessionId(SessionHelper.java:48) [core-88.0.0.jar:]
        at org.mainco.springboard.core.security.SpringboardSecurityContextRepository.loadContext(SpringboardSecurityContextRepository.java:69) [core-88.0.0.jar:]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) [spring-security-web-3.2.9.RELEASE.jar:3.2.9.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.9.RELEASE.jar:3.2.9.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) [spring-security-web-3.2.9.RELEASE.jar:3.2.9.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) [spring-security-web-3.2.9.RELEASE.jar:3.2.9.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) [spring-web-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) [spring-web-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.17.Final.jar:]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165) [jboss-as-web-7.1.3.Final.jar:7.1.3.Final]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372) [jbossweb-7.0.17.Final.jar:]
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:505) [jbossweb-7.0.17.Final.jar:]
        at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:453) [jbossweb-7.0.17.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) [jbossweb-7.0.17.Final.jar:]
        at java.lang.Thread.run(Thread.java:680) [rt.jar:1.6.0_65]

Я попытался добавить этот параметр в мой контекст Spring...

<bean id="systemPrereqs"
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" value="#{@systemProperties}" />
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop key="org.apache.tomcat.util.http.Parameters.MAX_COUNT">1024</prop>
        </util:properties>
    </property>
</bean>

Однако, несмотря на наличие этого в моем приложении, я все еще получаю вышеуказанную ошибку. Как я могу решить эту проблему, внеся изменения в приложение? Этот вопрос сфокусирован на том, чтобы заставить это работать, внося изменения в приложения, поэтому, если есть решения, связанные с переконфигурированием JBoss, это хорошо знать, но это не тот вопрос, который я задаю здесь.

1 ответ

Вам необходимо добавить это в конфигурацию JBoss (standalone.xml), а не в контекст Spring.

</extensions>

    <system-properties>
       <property name="org.apache.tomcat.util.bla.bla" value="nnn"/>
    </system-properties>

<management>

Смотрите здесь: http://www.javaquery.com/2013/12/javalangillegalstateexception-more-than.html

Другие вопросы по тегам