Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring引导应用程序中达到的最大请求参数数_Java_Spring_Tomcat_Spring Boot - Fatal编程技术网

Java spring引导应用程序中达到的最大请求参数数

Java spring引导应用程序中达到的最大请求参数数,java,spring,tomcat,spring-boot,Java,Spring,Tomcat,Spring Boot,我有一个spring boot应用程序,它使用多次上传来更新大量文件(10K+)。在这些情况下,我遇到了这个异常。我猜它正在查看我的“files”参数,看到它是一个大于10K的数组,并标记这个异常。我还发送了另一个参数,它是一个与文件列表关联的字符串数组,其大小为文件数>10K java.lang.IllegalStateException: More than the maximum number of request parameters (GET plus POST) for a sing

我有一个spring boot应用程序,它使用多次上传来更新大量文件(10K+)。在这些情况下,我遇到了这个异常。我猜它正在查看我的“files”参数,看到它是一个大于10K的数组,并标记这个异常。我还发送了另一个参数,它是一个与文件列表关联的字符串数组,其大小为文件数>10K

java.lang.IllegalStateException: More than the maximum number of request parameters (GET plus POST) for a single request ([10,000]) 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:204) ~[tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.apache.catalina.connector.Request.parseParts(Request.java:2860) ~[tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.apache.catalina.connector.Request.parseParameters(Request.java:3177) ~[tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.apache.catalina.connector.Request.getParameter(Request.java:1110) ~[tomcat-embed-core-8.5.11.jar:8.5.11]
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381) ~[tomcat-embed-core-8.5.11.jar:8.5.11]
我理解这个异常,但我正在尝试找出我的
应用程序.properties
中可以调整这个异常的位置。我在那里设置了
spring.http.multipart.max文件大小
spring.http.multipart.max请求大小
。我在这里没有找到与
maxParameterCount
相同的东西

另外,假设有一种方法可以为使用spring boot(tomcat embedded)在本地运行的实例设置它,那么更改是否也会在deploymenet环境中工作,或者这需要更改tomcat配置

更新:我发现了一个解决方案,可以在本地运行SpringBoot。我假设因为这改变了Tomcat嵌入式实例,所以这不适用于已部署的完整Tomcat环境——我想知道是否有一种解决方案可以在这两个Tomcat实例中工作

@Configuration
public class TomcatCustomizationConfiguration {

    @Bean
    public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
        final int maxHttpRequests = 50000;
        TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();

        tomcatFactory.addConnectorCustomizers(connector -> connector.setMaxParameterCount(maxHttpRequests));

        return tomcatFactory;
    }
}

连接器是Tomcat配置。至于如何使用Spring Boot进行设置,不太确定,因此不要为此将其标记为dupe。如果您希望它在“真实的”/“共享的tomcat实例”中工作,您应该直接更改容器配置,而不是以编程方式,因为这些都是服务器范围的配置(如果另一个部署的应用程序需要500个最大参数,而您需要20000个呢?)。这将在
server.xml
中通过在
定义中添加
maxParameterCount=“…”
来完成。您是说我的应用程序的代码不应更改服务器范围的设置,但可以设置服务器范围的配置文件吗?