Merge pull request #15054 from ayudovin

* pr/15054:
  Polish contribution
  Add configuration property for configuring Tomcat's processor cache
pull/15385/head
Stephane Nicoll 6 years ago
commit 2ac76b368d

@ -56,6 +56,7 @@ import org.springframework.util.unit.DataSize;
* @author Brian Clozel
* @author Olivier Lamy
* @author Chentao Qu
* @author Artsiom Yudovin
*/
@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
public class ServerProperties {
@ -369,6 +370,12 @@ public class ServerProperties {
*/
private int acceptCount = 100;
/**
* Maximum number of idle processors that will be retained in the cache and reused
* with a subsequent request.
*/
private int processorCache = 200;
/**
* Comma-separated list of additional patterns that match jars to ignore for TLD
* scanning. The special '?' and '*' characters can be used in the pattern to
@ -524,6 +531,14 @@ public class ServerProperties {
this.acceptCount = acceptCount;
}
public int getProcessorCache() {
return this.processorCache;
}
public void setProcessorCache(int processorCache) {
this.processorCache = processorCache;
}
public List<String> getAdditionalTldSkipPatterns() {
return this.additionalTldSkipPatterns;
}

@ -108,6 +108,8 @@ public class TomcatWebServerFactoryCustomizer implements
.to((maxConnections) -> customizeMaxConnections(factory, maxConnections));
propertyMapper.from(tomcatProperties::getAcceptCount).when(this::isPositive)
.to((acceptCount) -> customizeAcceptCount(factory, acceptCount));
propertyMapper.from(tomcatProperties::getProcessorCache).when(this::isPositive)
.to((processorCache) -> customizeProcessorCache(factory, processorCache));
customizeStaticResources(factory);
customizeErrorReportValve(properties.getError(), factory);
}
@ -134,6 +136,13 @@ public class TomcatWebServerFactoryCustomizer implements
});
}
private void customizeProcessorCache(ConfigurableTomcatWebServerFactory factory,
int processorCache) {
factory.addConnectorCustomizers((
connector) -> ((AbstractHttp11Protocol<?>) connector.getProtocolHandler())
.setProcessorCache(processorCache));
}
private void customizeMaxConnections(ConfigurableTomcatWebServerFactory factory,
int maxConnections) {
factory.addConnectorCustomizers((connector) -> {

@ -206,6 +206,12 @@ public class ServerPropertiesTests {
.isEqualTo(getDefaultProtocol().getAcceptCount());
}
@Test
public void tomcatProcessorCacheMatchesProtocolDefault() throws Exception {
assertThat(this.properties.getTomcat().getProcessorCache())
.isEqualTo(getDefaultProtocol().getProcessorCache());
}
@Test
public void tomcatMaxConnectionsMatchesProtocolDefault() throws Exception {
assertThat(this.properties.getTomcat().getMaxConnections())

@ -87,6 +87,12 @@ public class TomcatWebServerFactoryCustomizerTests {
.isEqualTo(10));
}
@Test
public void customProcessorCache() {
bind("server.tomcat.processor-cache=100");
assertThat(this.serverProperties.getTomcat().getProcessorCache()).isEqualTo(100);
}
@Test
public void customBackgroundProcessorDelay() {
bind("server.tomcat.background-processor-delay=5");

@ -276,6 +276,7 @@ content into your application. Rather, pick only the properties that you need.
server.tomcat.max-threads=200 # Maximum amount of worker threads.
server.tomcat.min-spare-threads=10 # Minimum amount of worker threads.
server.tomcat.port-header=X-Forwarded-Port # Name of the HTTP header used to override the original port value.
server.tomcat.processor-cache=200 # Maximum number of idle processors that will be retained in the cache and reused with a subsequent request.
server.tomcat.protocol-header= # Header that holds the incoming protocol, usually named "X-Forwarded-Proto".
server.tomcat.protocol-header-https-value=https # Value of the protocol header indicating whether the incoming request uses SSL.
server.tomcat.redirect-context-root=true # Whether requests to the context root should be redirected by appending a / to the path.

Loading…
Cancel
Save