小编典典

使用Spring Boot应用程序属性设置tomcat属性

tomcat

我想为启动提供的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


阅读 283

收藏
2020-06-16

共1个答案

小编典典

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);
            }
        }
    };

}
2020-06-16