「当你需要在同一个Spring Boot应用中,通过不同的端口来提供不同的服务或功能时,就需要实现多端口监听.」
这可能是因为:
「开发或测试方便」:开发测试阶段,可能想快速模拟多个服务的行为,但又不想启动多个应用实例。
「临时需求」:有时需要临时添加一个服务端口,以满足特定的测试或演示需求。
「特殊配置」:某些网络配置或安全策略要求应用监听多个端口。
1.独立Tomcat中配置多个Connector实现多端口监听
Tomcat的server.xml
文件可以配置多个Connector
元素,每个Connector
元素代表一个监听端口。配置两个HTTP连接器,分别监听8080和8081端口:
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
...</Service>
2. SpringBoot中通过代码配置嵌入式Tomcat监听多个端口
SpringBoot中可以通过代码来配置嵌入式Tomcat以监听多个端口。创建一个配置类,并在其中创建ServletWebServerFactory
Bean:
@Configurationpublic class MultiPortConfig {
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
// 配置主端口8080 factory.setPort(8080);
// 添加额外的Connector监听8081端口 Connector additionalConnector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); additionalConnector.setPort(8081); factory.addAdditionalTomcatConnectors(additionalConnector);
// 可添加更多Connector监听不同端口
return factory; }}
每种方式都有适用场景。如希望在不同的端口上运行不同的服务,可使用方式1。如希望在同一Spring Boot应用中监听多个端口,方式2适合。如果希望将多个端口的请求转发到同一个服务,方式2更合适。
来源:https://mp.weixin.qq.com/s/wyBplF6zegWxtlDpBf3XXw
没有回复内容