Add configuration property for configuring Tomcat's processor cache
See gh-15054
This commit is contained in:
parent
2f4751a648
commit
3059f0e2e2
|
@ -56,6 +56,7 @@ import org.springframework.util.unit.DataSize;
|
||||||
* @author Brian Clozel
|
* @author Brian Clozel
|
||||||
* @author Olivier Lamy
|
* @author Olivier Lamy
|
||||||
* @author Chentao Qu
|
* @author Chentao Qu
|
||||||
|
* @author Artsiom Yudovin
|
||||||
*/
|
*/
|
||||||
@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
|
@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
|
||||||
public class ServerProperties {
|
public class ServerProperties {
|
||||||
|
@ -369,6 +370,12 @@ public class ServerProperties {
|
||||||
*/
|
*/
|
||||||
private int acceptCount = 100;
|
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
|
* 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
|
* scanning. The special '?' and '*' characters can be used in the pattern to
|
||||||
|
@ -524,6 +531,14 @@ public class ServerProperties {
|
||||||
this.acceptCount = acceptCount;
|
this.acceptCount = acceptCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getProcessorCache() {
|
||||||
|
return this.processorCache;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProcessorCache(int processorCache) {
|
||||||
|
this.processorCache = processorCache;
|
||||||
|
}
|
||||||
|
|
||||||
public List<String> getAdditionalTldSkipPatterns() {
|
public List<String> getAdditionalTldSkipPatterns() {
|
||||||
return this.additionalTldSkipPatterns;
|
return this.additionalTldSkipPatterns;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,8 @@ public class TomcatWebServerFactoryCustomizer implements
|
||||||
.to((maxConnections) -> customizeMaxConnections(factory, maxConnections));
|
.to((maxConnections) -> customizeMaxConnections(factory, maxConnections));
|
||||||
propertyMapper.from(tomcatProperties::getAcceptCount).when(this::isPositive)
|
propertyMapper.from(tomcatProperties::getAcceptCount).when(this::isPositive)
|
||||||
.to((acceptCount) -> customizeAcceptCount(factory, acceptCount));
|
.to((acceptCount) -> customizeAcceptCount(factory, acceptCount));
|
||||||
|
propertyMapper.from(tomcatProperties::getProcessorCache).when(this::isPositive)
|
||||||
|
.to((processorCache) -> customizeProcessorCache(factory, processorCache));
|
||||||
customizeStaticResources(factory);
|
customizeStaticResources(factory);
|
||||||
customizeErrorReportValve(properties.getError(), factory);
|
customizeErrorReportValve(properties.getError(), factory);
|
||||||
}
|
}
|
||||||
|
@ -156,6 +158,13 @@ public class TomcatWebServerFactoryCustomizer implements
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void customizeProcessorCache(ConfigurableTomcatWebServerFactory factory,
|
||||||
|
int processorCache) {
|
||||||
|
factory.addConnectorCustomizers((
|
||||||
|
connector) -> ((AbstractHttp11Protocol<?>) connector.getProtocolHandler())
|
||||||
|
.setProcessorCache(processorCache));
|
||||||
|
}
|
||||||
|
|
||||||
private void customizeRemoteIpValve(ConfigurableTomcatWebServerFactory factory) {
|
private void customizeRemoteIpValve(ConfigurableTomcatWebServerFactory factory) {
|
||||||
Tomcat tomcatProperties = this.serverProperties.getTomcat();
|
Tomcat tomcatProperties = this.serverProperties.getTomcat();
|
||||||
String protocolHeader = tomcatProperties.getProtocolHeader();
|
String protocolHeader = tomcatProperties.getProtocolHeader();
|
||||||
|
|
|
@ -87,6 +87,12 @@ public class TomcatWebServerFactoryCustomizerTests {
|
||||||
.isEqualTo(10));
|
.isEqualTo(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void customProcessorCache() {
|
||||||
|
bind("server.tomcat.processor-cache=100");
|
||||||
|
assertThat(this.serverProperties.getTomcat().getProcessorCache()).isEqualTo(100);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void customBackgroundProcessorDelay() {
|
public void customBackgroundProcessorDelay() {
|
||||||
bind("server.tomcat.background-processor-delay=5");
|
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.max-threads=200 # Maximum amount of worker threads.
|
||||||
server.tomcat.min-spare-threads=10 # Minimum 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.port-header=X-Forwarded-Port # Name of the HTTP header used to override the original port value.
|
||||||
|
server.tomcat.processor-cache= # 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= # 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.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.
|
server.tomcat.redirect-context-root=true # Whether requests to the context root should be redirected by appending a / to the path.
|
||||||
|
|
Loading…
Reference in New Issue