【问题标题】:Spring boot application with two services on two different ports在两个不同端口上具有两个服务的 Spring Boot 应用程序
【发布时间】:2019-07-29 04:32:32
【问题描述】:

我有一个带有两个服务的 Spring Boot 应用程序,但我需要在端口 8080 上运行一个,另一个在 8081 上运行。现在我正在使用 sts(Spring 工具套件)进行开发,并使用“运行方式”选项运行该应用程序spring boot app”,所以我不知道在哪里更改服务器配置。有人可以帮助我吗?

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

你不能在两个不同的端口在同一个spring boot应用下运行两个不同的服务。如果您愿意,可以将一项服务移动到另一个 Spring Boot 应用程序。 但是两种服务的端口号不同。

【讨论】:

    【解决方案2】:

    你可以在 application.properties 或 application.yml 中写下一行

    server.port=8080

    【讨论】:

      【解决方案3】:

      您可以配置 SprintBoot 支持两个端口。常用的配置方法是使用application.propertiesapplication.yaml 作为@Madhu Bhat 答案。在 SprintBoot 中配置另一个端口代码如下:

      创建一个连接器

              int port = Integer.parseInt(probePort);
              Connector httpConnector = new Connector(HTTP_PROTOCOL);
              httpConnector.setPort(port);
              Http11NioProtocol handler = (Http11NioProtocol) httpConnector.getProtocolHandler();
              handler.setMaxThreads(10);
              handler.setMinSpareThreads(4);
              //handler.setAddress(InetAddress.getLocalHost());
              handler.setAddress(StringTool.getInetAddress());
              return httpConnector;
      

      配置连接器

      ((TomcatEmbeddedServletContainerFactory) container).addAdditionalTomcatConnectors(connector);
      

      【讨论】:

      • 但这需要在两个不同的端口上运行两个不同的应用程序吗?
      【解决方案4】:

      可以在您使用的application.propertiesapplication.yaml 配置文件中定义端口。

      application.properties文件中,定义如下:

      server.port=8090
      

      或者,如果您使用的是 application.yaml 配置,请将其定义如下:

      server:
          port: 8090
      

      【讨论】:

      • 那么,如果我需要访问两个不同的端口,我需要在两个不同端口上的两台服务器上运行应用程序?
      • @AlessioPascucci 如果您必须在不同的端口上有两个服务,您需要将它作为两个不同的应用程序运行,每个应用程序都有自己不同的端口。
      【解决方案5】:

      如果您使用 Docker(最常见的解决方案),您可以将端口或其完整地址添加为环境变量

      docker-compose.yml 文件如下:

      application1:
          image: 'application1:latest'
          build:
            context: ./
          container_name: application
          environment:
            - HOST-APP2=localhost:8082
          ports:
            - 8091:8080
      
      application2:
          image: 'application2:latest'
          build:
            context: ./
          container_name: application
          environment:
            - HOST-APP1=localhost:8081
          ports:
            - 8092:8080
      

      或在构建容器时直接在 Dockerfile 中

      在这里查看:https://vsupalov.com/docker-arg-env-variable-guide/ 这是一篇好文章

      【讨论】:

        【解决方案6】:

        当然。您可以在 spring boot 项目的 application.properties 文件中通过为每个服务设置 server.port=number 来完成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-02
          • 1970-01-01
          • 1970-01-01
          • 2021-03-14
          • 2021-03-02
          • 2022-01-25
          • 1970-01-01
          • 2012-02-01
          相关资源
          最近更新 更多