使用spring启动应用程序属性设置tomcat属性

时间:2015-08-27 12:56:59

标签: java spring spring-mvc tomcat spring-boot

我想为boot提供的tomcat设置maxSwallowSize属性。 我的application.properties有这一行:

server.context-parameters.maxSwallowSize=20971520 

由于某种原因不起作用。 server.port等其他属性运行良好。 在TomcatEmbeddedServletContainerFactory中调试创建我看到有一个带有此属性的ServletContexInitializer(InitParameterConfiguringServletContextInitializer),但它似乎没有以任何方式使用。 (即使它是变量名initializersToUse,具有讽刺意味; p)

当上传超过

设置的最大尺寸时,我不喜欢连接终止
multipart.max-request-size=10MB
multipart.max-file-size=2MB

这是设置此属性的正确方法吗?在调试过程中,我可以看到IdentityInputFilter的默认值为2MB。

最新版本的org.springframework.boot:spring-boot-starter-web

3 个答案:

答案 0 :(得分:10)

server.context-parameters(因为defined in the documentation可用于指定servlet上下文的init参数)。 maxSwallowSize是连接器的属性。我想这是另一回事。

我们没有明确的属性,但您始终可以通过自己的TomcatEmbeddedServletContainerFactory进行配置。

@Bean
public TomcatEmbeddedServletContainerFactory containerFactory() {
    return new TomcatEmbeddedServletContainerFactory() {
        protected void customizeConnector(Connector connector) {
            super.customizeConnector(connector);
            if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
                (AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(value);
            }
        }
    };

}

答案 1 :(得分:1)

上面的配置对我没有帮助(我正在使用Spring Boot 1.5.10)

我发现解决方案是设置

<强> application.properties:

spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB

并且所有上传都可以正常运行而无需配置Tomcat。

答案 2 :(得分:0)

配置 spring.http.multipart.max-request-size maxSwallowSize 不同。前者配置应用程序,而后者配置Tomcat服务器。

因此,在 spring.http.multipart 配置的添加中,您还应该提供 maxSwallowSize 的配置,只需为Spring Boot完成即可2通过设置应用程序属性:

server.tomcat.max-swallow-size=100MB
相关问题