spring boot 2.0 监听多个端口

Posted

技术标签:

【中文标题】spring boot 2.0 监听多个端口【英文标题】:spring boot 2.0 listening on multiple ports 【发布时间】:2018-05-13 05:38:45 【问题描述】:

我需要在嵌入式 tomcat 中监听 2 个端口 - 比如说 8443 (https) 和 8081 (http)。

使用 spring boot 1.5.3.RELEASE 我做了类似的事情:

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() 
    return new EmbeddedServletContainerCustomizer() 
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) 
            if (container instanceof TomcatEmbeddedServletContainerFactory) 
                TomcatEmbeddedServletContainerFactory containerFactory =
                        (TomcatEmbeddedServletContainerFactory) container;

                Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
                connector.setPort(httpPort);
                containerFactory.addAdditionalTomcatConnectors(connector);
            
        
    ;

而且很好。现在我正在尝试使用spring-boot-starter-parent 2.0.0.M6 并且找不到以下类:

org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory

所以我正在寻找一种在多个端口上接受连接的方法。我该怎么做?

【问题讨论】:

【参考方案1】:

Spring Boot 2.0.0 M1 release notes 声明:

嵌入式容器包结构已经重构 广泛地。 EmbeddedServletContainer 已重命名为 WebServer 并且 org.springframework.boot.context.embedded 包已经 重新定位到 org.springframework.boot.web.embedded。例如,如果 您正在使用自定义嵌入式 Tomcat 容器 TomcatEmbeddedServletContainerFactory 回调接口,你应该 现在使用 TomcatServletWebServerFactory。

来自 Spring Boot 源代码,以 commit 67556ba8ea 开头:

org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer 已移至org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory

org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer已移至org.springframework.boot.web.server.WebServerFactoryCustomizer

org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory 已移至 org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory

【讨论】:

以上是关于spring boot 2.0 监听多个端口的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 中创建 PROXY 服务,监听多个端口,并将 GET 请求重定向到新 URL

Spring Boot 2.0:Spring Boot 开源软件都有哪些?(转)

Spring Boot 2.0详述

修改 Spring boot 启动端口号 Spring Boot 监听端口被占用无法启动

Spring boot设置启动监听端口

如何为 Spring Boot 应用程序配置端口