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 ;
@@ -137,6 +138,14 @@ public WebServerFactoryCustomizer<TomcatServletWebServerFactory> customizer()
137138 return customizer -> customizer .setDisableMBeanRegistry (false );
138139 }
139140
141+ @ Bean
142+ TomcatConnectorCustomizer connectorCustomizer () {
143+ return (connector ) -> {
144+ connector .setMaxPartCount (contextSource ().getMaxConnectorPartCount ());
145+ connector .setMaxPartHeaderSize (contextSource ().getMaxConnectorPartHeaderSize ());
146+ };
147+ }
148+
140149 @ Bean
141150 public TomcatServletWebServerFactory servletContainerFactory ()
142151 {
@@ -149,6 +158,7 @@ public TomcatServletWebServerFactory servletContainerFactory()
149158 Connector httpConnector = new Connector ();
150159 httpConnector .setScheme ("http" );
151160 httpConnector .setPort (contextProperties .getHttpPort ());
161+ result .getTomcatConnectorCustomizers ().forEach (customizer -> customizer .customize (httpConnector ));
152162 result .addAdditionalTomcatConnectors (httpConnector );
153163 }
154164
@@ -446,6 +456,9 @@ public static class ContextProperties
446456 private Map <String , Map <String , Map <String , String >>> resources ;
447457 private Map <String , String > additionalWebapps ;
448458
459+ private Integer maxConnectorPartCount = 100 ;
460+ private Integer maxConnectorPartHeaderSize = 512 ;
461+
449462 public List <String > getDataSourceName ()
450463 {
451464 return dataSourceName ;
@@ -708,6 +721,26 @@ public void setAdditionalWebapps(Map<String, String> additionalWebapps)
708721 {
709722 this .additionalWebapps = additionalWebapps ;
710723 }
724+
725+ public Integer getMaxConnectorPartCount ()
726+ {
727+ return maxConnectorPartCount ;
728+ }
729+
730+ public void setMaxConnectorPartCount (Integer maxConnectorPartCount )
731+ {
732+ this .maxConnectorPartCount = maxConnectorPartCount ;
733+ }
734+
735+ public Integer getMaxConnectorPartHeaderSize ()
736+ {
737+ return maxConnectorPartHeaderSize ;
738+ }
739+
740+ public void setMaxConnectorPartHeaderSize (Integer maxConnectorPartHeaderSize )
741+ {
742+ this .maxConnectorPartHeaderSize = maxConnectorPartHeaderSize ;
743+ }
711744 }
712745
713746 @ Configuration
0 commit comments