77import org .springframework .boot .autoconfigure .SpringBootApplication ;
88import org .springframework .boot .context .ApplicationPidFileWriter ;
99import org .springframework .boot .context .properties .ConfigurationProperties ;
10+ import org .springframework .boot .web .embedded .tomcat .TomcatConnectorCustomizer ;
1011import org .springframework .boot .web .embedded .tomcat .TomcatServletWebServerFactory ;
1112import org .springframework .boot .web .server .WebServerFactoryCustomizer ;
1213import org .springframework .context .annotation .Bean ;
@@ -147,6 +148,14 @@ public WebServerFactoryCustomizer<TomcatServletWebServerFactory> customizer()
147148 return customizer -> customizer .setDisableMBeanRegistry (false );
148149 }
149150
151+ @ Bean
152+ TomcatConnectorCustomizer connectorCustomizer () {
153+ return (connector ) -> {
154+ connector .setMaxPartCount (contextSource ().getMaxConnectorPartCount ());
155+ connector .setMaxPartHeaderSize (contextSource ().getMaxConnectorPartHeaderSize ());
156+ };
157+ }
158+
150159 @ Bean
151160 public TomcatServletWebServerFactory servletContainerFactory ()
152161 {
@@ -159,6 +168,7 @@ public TomcatServletWebServerFactory servletContainerFactory()
159168 Connector httpConnector = new Connector ();
160169 httpConnector .setScheme ("http" );
161170 httpConnector .setPort (contextProperties .getHttpPort ());
171+ result .getTomcatConnectorCustomizers ().forEach (customizer -> customizer .customize (httpConnector ));
162172 result .addAdditionalTomcatConnectors (httpConnector );
163173 }
164174
@@ -456,6 +466,9 @@ public static class ContextProperties
456466 private Map <String , Map <String , Map <String , String >>> resources ;
457467 private Map <String , String > additionalWebapps ;
458468
469+ private Integer maxConnectorPartCount = 100 ;
470+ private Integer maxConnectorPartHeaderSize = 512 ;
471+
459472 public List <String > getDataSourceName ()
460473 {
461474 return dataSourceName ;
@@ -718,6 +731,26 @@ public void setAdditionalWebapps(Map<String, String> additionalWebapps)
718731 {
719732 this .additionalWebapps = additionalWebapps ;
720733 }
734+
735+ public Integer getMaxConnectorPartCount ()
736+ {
737+ return maxConnectorPartCount ;
738+ }
739+
740+ public void setMaxConnectorPartCount (Integer maxConnectorPartCount )
741+ {
742+ this .maxConnectorPartCount = maxConnectorPartCount ;
743+ }
744+
745+ public Integer getMaxConnectorPartHeaderSize ()
746+ {
747+ return maxConnectorPartHeaderSize ;
748+ }
749+
750+ public void setMaxConnectorPartHeaderSize (Integer maxConnectorPartHeaderSize )
751+ {
752+ this .maxConnectorPartHeaderSize = maxConnectorPartHeaderSize ;
753+ }
721754 }
722755
723756 @ Configuration
0 commit comments