当前位置: 首页 > 面试题库 >

使用两个端口配置Spring Boot

杜正奇
2023-03-14
问题内容

我正在尝试使用两个不同的端口在Spring Boot中配置应用程序,但是我还没有停下来。我的第一个替代方法是使用两个控制器,我在两个控制器中使用container.setPort(8080);定义了一个@Bean。我的第二个替代方法是添加执行器依赖性并更改管理端口,但我的应用程序无法运行。“地址已在使用中:绑定”,如何配置具有两个端口的应用程序?我想要一个端口用于管理,而另一个端口则用于查询我的api。


问题答案:

正如前面已经提到的,server.portmanagement.port沿management.context-path特性可以被设置为使嵌入容器监听不同的端口(管理相关的属性来访问Actuator端点)。

要侦听除server.port和以外的端口management.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[] {});
    }
}

application.yml

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

应用程序

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

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


 类似资料:
  • 如何配置Jetty9以使用Gretty侦听多个端口。我只想配置Jetty监听多个端口。我不想要多个实例或多个webapp,只是一个Jetty,一个webapp,但监听2个或更多的端口。 谢谢!

  • 就是在做php项目的时候,自己本地有多个web项目,对应也是配置了nginx的配置,比如A项目: 项目B配置如下: 就是上面2个项目都是80端口,也都是正常运行,那为什么2个项目都使用80端口但是不算端口冲突呢?

  • 问题内容: 我是Spring和Spring Boot的新手。如何配置和使用两个数据源? 例如,这是我对第一个数据源的需求: 应用类别 如何修改以添加另一个数据源?如何将其自动布线以供其他存储库使用? 问题答案:

  • 如何配置和使用两个数据源? 例如,下面是第一个数据源: 应用程序.属性 应用程序类 如何修改以添加另一个数据源?我如何自动将其用于不同的存储库?

  • 如何配置和使用两个数据源? 例如,以下是我对第一个数据源的了解: 应用属性 应用类 如何修改应用程序。是否要添加其他数据源?如何自动关联它以供其他存储库使用?

  • 我有一个k8s集群,如下所示 如上所述,我有一个外部ip A.B.C.D。 我还有两个域名domainA。com和域B。通用域名格式。 我的DNS设置如下: 对于domainA。通用域名格式: 在我用helm安装两个应用程序后 我得到了 我不知道为什么后端有两个IP。 www.domainA。com和www.domainB。com可能会路由到相同的ip(10.244.1.15:80),这是我不想要