使用两个端口配置 Spring Boot

新手上路,请多包涵

我正在尝试使用两个不同的端口在 Spring Boot 中配置一个应用程序,但我还没有。我的第一个近似值是使用两个控制器,并且我在两个控制器中定义了一个 @Bean 与 container.setPort(8080);我的第二个近似是添加执行器依赖项并更改管理端口,但我的应用程序没有运行。 “地址已在使用:绑定”,如何配置具有两个端口的应用程序?我想要一个端口用于管理员,另一个端口用于咨询我的 api。

原文由 nole 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
1 个回答

如前所述,可以设置 server.portmanagement.port 以及 management.context-path 属性以使嵌入式容器侦听不同的端口(管理相关的属性访问 Actuator 端点)。

要侦听 server.portmanagement.port 以外的端口:

 @Configuration
public class EmbeddedTomcatConfiguration {

    @Value("${server.additionalPorts}")
    private String additionalPorts;

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
        Connector[] additionalConnectors = this.additionalConnector();
        if (additionalConnectors != null && additionalConnectors.length > 0) {
            tomcat.addAdditionalTomcatConnectors(additionalConnectors);
        }
        return tomcat;
    }

    private Connector[] additionalConnector() {
        if (StringUtils.isBlank(this.additionalPorts)) {
            return null;
        }
        String[] ports = this.additionalPorts.split(",");
        List<Connector> result = new ArrayList<>();
        for (String port : ports) {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            connector.setPort(Integer.valueOf(port));
            result.add(connector);
        }
        return result.toArray(new Connector[] {});
    }
}

应用程序.yml

 server:
  port: ${appPort:8800}
  additionalPorts: 8881,8882

应用程序.java

 @SpringBootApplication
@ComponentScan(...)
@Import(EmbeddedTomcatConfiguration.class)
public Application {

    public static void main(String[] args) {
        SpringApplication.run(Application .class, args);
    }
}

我最近在 http://tech.asimio.net/2016/12/15/Configuring-Tomcat-to-Listen-on-Multiple-ports-using-Spring-Boot.html 上写了关于这个主题的博客

原文由 ootero 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题