繁体   English   中英

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

[英]Setting a tomcat property using spring boot application properties

我想为引导提供的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

server.context-parameters (如文档中定义,可用于指定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);
            }
        }
    };

}

像上面的配置没有帮助我(我使用的是Spring Boot 1.5.10)

我发现解决方案是设置

application.properties:

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

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

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

所以除了 spring.http.multipart配置之外 ,你还应该为maxSwallowSize提供配置,这可以通过设置应用程序属性来简单地为Spring Boot 2完成:

server.tomcat.max-swallow-size=100MB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM