tomcat和undertow增加端口监听(springboot环境下)
下面是undertow:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class UnderTowUtil {
@Value("${server.additionalPort}")
private String additionalPort;
@Bean
public UndertowServletWebServerFactory getApplicationcontext() {
UndertowServletWebServerFactory undertow = new UndertowServletWebServerFactory();
if (additionalPort != null && additionalPort.length() > 0) {
undertow.addBuilderCustomizers(builder -> builder.addHttpListener(Integer.parseInt(additionalPort), "0.0.0.0"));
}
return undertow;
}
}
@SpringBootApplication
@Import(UnderTowUtil.class)
下面是tomcat:
@SpringBootApplication
public class TomcatConfigApplication implements EmbeddedServletContainerCustomizer {
public static void main(String[] args) {
SpringApplication.run(TomcatConfigApplication.class, args);
}
@Value("${server.additional-ports}")
String ports;
@Override
public void customize(
ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
if (ports != null) {
// 判断如果是Tomcat才进行如下配置
if (configurableEmbeddedServletContainer instanceof TomcatEmbeddedServletContainerFactory) {
// 转类型为TomcatEmbeddedServletContainerFactory
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) configurableEmbeddedServletContainer;
String[] portsArray = ports.split(",");
for (String portStr : portsArray) {
int port = Integer.parseInt(portStr);
// Tomcat中,一个Connecter监听一个端口
// 指定协议为HTTP/1.1
Connector httpConnector = new Connector("HTTP/1.1");
httpConnector.setPort(port);
tomcat.addAdditionalTomcatConnectors(httpConnector);
}
}
}
}
}