下面列出了org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory#addConnectorCustomizers ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Bean
public ConfigurableServletWebServerFactory configurableServletWebServerFactory() {
log.info("custom TomcatServletWebServerFactory");
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.setProtocol(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
factory.addConnectorCustomizers((connector) -> {
// default max connections = 10000
// default connection timeout = 20000
// default max accept count = 100
// default max worker thread = 200
connector.setEnableLookups(false);
connector.setAllowTrace(false);
Http11NioProtocol http11NioProtocol = (Http11NioProtocol) connector.getProtocolHandler();
http11NioProtocol.setKeepAliveTimeout(60000);
http11NioProtocol.setMaxKeepAliveRequests(10000);
http11NioProtocol.setDisableUploadTimeout(true);
http11NioProtocol.setTcpNoDelay(true);
}
);
return factory;
}
@Bean
public TomcatServletWebServerFactory tomcatEmbedded() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
//-1 means unlimited
((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
}
});
return tomcat;
}
@Override
public void customize(WebServerFactory container) {
TomcatServletWebServerFactory containerFactory = (TomcatServletWebServerFactory) container;
containerFactory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
connector.setAttribute("relaxedQueryChars", "[]|{}^\" < > ");
connector.setAttribute("relaxedPathChars", "[]|");
});
}
/**
* 配置tomcat
*
* @return
*/
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers(gracefulShutdown());
return tomcat;
}
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(
(TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "|{}[]\\"));
return factory;
}
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setProperty("relaxedQueryChars", "|{}[]");
}
});
return factory;
}
@Bean
public ServletWebServerFactory servletContainer(ServerProperties serverProperties) {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers(new VIPTomcatConnectionCustomizer(serverProperties));
if (serverProperties.getServerScheme().equalsIgnoreCase(ConstantsTomcat.HTTP_HTTPS) ||
serverProperties.getServerScheme().equalsIgnoreCase(ConstantsTomcat.HTTPS_HTTP)) {
tomcat.addAdditionalTomcatConnectors(initiateHttpsConnector(serverProperties));
}
return tomcat;
}
@Bean
public ServletWebServerFactory servletContainer(ServerProperties serverProperties) {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers(new VIPTomcatConnectionCustomizer(serverProperties));
if (serverProperties.getServerScheme().equalsIgnoreCase(ConstantsTomcat.HTTP_HTTPS) ||
serverProperties.getServerScheme().equalsIgnoreCase(ConstantsTomcat.HTTPS_HTTP)) {
tomcat.addAdditionalTomcatConnectors(initiateHttpsConnector(serverProperties));
}
return tomcat;
}
@Bean
public TomcatServletWebServerFactory tomcatEmbedded() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
//-1 means unlimited
((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
}
});
return tomcat;
}
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(
connector -> {
Http11NioProtocol protocol =
(Http11NioProtocol) connector.getProtocolHandler();
protocol.setDisableUploadTimeout(false);
}
);
return factory;
}
/**
* tomcat配置
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.getSession().setTimeout(Duration.ofMinutes(10));
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
AbstractHttp11Protocol httpProtocol = (AbstractHttp11Protocol) connector.getProtocolHandler();
httpProtocol.setCompression("on");
httpProtocol.setCompressibleMimeType("text/html,text/xml,text/plain,application/json,application/xml");
}
});
return factory;
}
@Bean
public ServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
fa.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
return fa;
}
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addConnectorCustomizers(connector -> connector.setAllowTrace(true));
return tomcat;
}
@Bean
public ServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
fa.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
return fa;
}
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers(connectorCustomizer);
}
@Bean
public ServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
fa.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
return fa;
}
/**
* Bean: ServletWebServerFactory.
* Creates a dual port Tomcat, listening both in an http port and an https port. The http port simply redirects to the https one.
*
* @return TomcatServletWebServerFactory.
*/
@Bean
public ServletWebServerFactory servletWebServerFactory() {
// Check if there is dual port configuration.
if (serverProperties.getInternalHttpPort() == null
|| serverProperties.getExternalHttpPort() == null
|| serverProperties.getInternalHttpsPort() == null
|| serverProperties.getExternalHttpsPort() == null
|| serverProperties.getPort().equals(serverProperties.getInternalHttpPort())
|| !serverProperties.getPort().equals(serverProperties.getInternalHttpsPort())) {
return new TomcatServletWebServerFactory();
}
// Set TLS ECDH offered curves.
if (!StringUtils.isEmpty(sslProperties.getEcdhCurves()))
System.setProperty(JdkProperty.TLS_ECDH_CURVES.getPropertyName(), sslProperties.getEcdhCurves());
// Enable TLS OCSP stapling.
if (sslProperties.getEnableOcspStapling() != null)
System.setProperty(JdkProperty.TLS_ENABLE_OCSP_STAPLING.getPropertyName(), sslProperties.getEnableOcspStapling().toString());
// Create the https Tomcat.
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(
Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
// Customize the https connector.
tomcat.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(
Connector connector) {
SSLHostConfig sslHostConfig = connector.findSslHostConfigs()[0];
sslHostConfig.setHonorCipherOrder(true);
}
});
// Add the http connector with a redirection to the https port.
Connector httpConnector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
httpConnector.setScheme("http");
httpConnector.setPort(serverProperties.getInternalHttpPort());
httpConnector.setSecure(false);
httpConnector.setRedirectPort(serverProperties.getExternalHttpsPort());
tomcat.addAdditionalTomcatConnectors(httpConnector);
return tomcat;
}
@Override
public void customize(TomcatServletWebServerFactory factory) {
connectorCustomizer = new MdwServletContainerFactory.ConnectorCustomizer();
factory.addConnectorCustomizers(connectorCustomizer);
}