spring boot 2.0 listening on multiple ports

2020-02-05 07:31发布

I need to have 2 ports listening in embedded tomcat - lets say 8443 (https) and 8081 (http).

With spring boot 1.5.3.RELEASE I did something like:

@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);
            }
        }
    };
}

And it was fine. Now I'm trying to use spring-boot-starter-parent 2.0.0.M6 and the following classes cannot be found:

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

So I'm looking for a way to accept connections on multiple ports. How can I do that?

1条回答
▲ chillily
2楼-- · 2020-02-05 08:16

Spring Boot 2.0.0 M1 release notes state that:

the embedded containers package structure has been refactored quite extensively. EmbeddedServletContainer has been renamed to WebServer and the org.springframework.boot.context.embedded package has been relocated to org.springframework.boot.web.embedded. For instance, if you were customizing the embedded Tomcat container using the TomcatEmbeddedServletContainerFactory callback interface, you should now use TomcatServletWebServerFactory.

From the Spring Boot source code, starting with commit 67556ba8ea:

org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer was moved to org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory

org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerwas moved to org.springframework.boot.web.server.WebServerFactoryCustomizer

org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory was moved to org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory

查看更多
登录 后发表回答