一尘不染

Spring Boot 2.0在多个端口上侦听

spring-boot

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

使用Spring靴子,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

因此,我正在寻找一种接受多个端口上的连接的方法。我怎样才能做到这一点?


阅读 364

收藏
2020-05-30

共1个答案

一尘不染

Spring Boot 2.0.0 M1 发行说明指出:

嵌入式容器的包装结构已经进行了广泛的重构。EmbeddedServletContainer已重命名为WebServer,并且org.springframework.boot.context.embedded包已重定位到org.springframework.boot.web.embedded。例如,如果要使用TomcatEmbeddedServletContainerFactory回调接口自定义嵌入式Tomcat容器,则现在应使用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

2020-05-30