1

我正在尝试在springboot微服务中将tomcat的max-swallow-size属性设置为-1,同时升级到springboot版本2;我之前的代码可以正常工作,但是在升级时,一些类已经改变,所以它停止工作了。

我尝试以两种方式设置属性,但都不起作用;

  1. 带服务配置
@Bean
public ServletWebServerFactory servletContainerFactory() {

        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();

        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                if(connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
                    logger.debug("Setting maxSwallowSize for server connector as "+maxSwallowSize);
                    ((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSwallowSize);
                }
            }
        });

        return factory;
    }

在控制流中,我可以看到打印的调试行,但它没有生效,因为端点响应是 502(坏网关)而不是 400

第二种方式:2.通过带有属性的application.properties文件

server.tomcat.max-swallow-size=-1

这也不光彩。

现在,如何验证属性值是否实际设置?还是我以正确的方式设置值?

4

1 回答 1

3

这个新课程解决了我的问题

@Component
public class TomcatCustomizer implements
WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {

        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                if(connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
                    ((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSwallowSize);
                }
            }
        });
    }
}

我在 Spring Boot 2.0 中使用了更新的属性

spring.servlet.multipart.max-file-size= XX MB
spring.servlet.multipart.max-request-size= YY MB

于 2019-05-22T06:16:59.013 回答