Springブート - 組み込みTomcatでのmaxSwallowSizeの設定

Spring Boot –組み込みTomcatでmaxSwallowSizeを構成します

Spring Bootでは、common application propertiesを介して組み込みTomcatmaxSwallowSizeを構成することはできません。server.tomcat.*.maxSwallowSizeのようなオプションはありません。

溶液

これを修正するには、TomcatEmbeddedServletContainerFactory Beanを宣言し、maxSwallowSizeを次のように構成する必要があります。

//...
import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;

    private int maxUploadSizeInMb = 10 * 1024 * 1024; // 10 MB

    @Bean
    public TomcatEmbeddedServletContainerFactory tomcatEmbedded() {

        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();

        tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {

            // connector other settings...

            // configure maxSwallowSize
            if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol)) {
                // -1 means unlimited, accept bytes
                ((AbstractHttp11Protocol) connector.getProtocolHandler()).setMaxSwallowSize(-1);
            }

        });

        return tomcat;

    }