Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在两个不同端口上具有两个服务的Spring引导应用程序_Java_Spring_Spring Boot - Fatal编程技术网

Java 在两个不同端口上具有两个服务的Spring引导应用程序

Java 在两个不同端口上具有两个服务的Spring引导应用程序,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个带有两个服务的spring引导应用程序,但我需要在端口8080上运行一个,在端口8081上运行另一个。现在我正在使用sts(SpringToolSuite)进行开发,我使用“RunasSpringBootApp”选项运行应用程序,所以我不知道在哪里更改服务器配置。有人可以帮我吗?可以在您使用的应用程序.properties或应用程序.yaml配置文件中定义端口 在application.properties文件中,定义如下: server.port=8090 server: p

我有一个带有两个服务的spring引导应用程序,但我需要在端口8080上运行一个,在端口8081上运行另一个。现在我正在使用sts(SpringToolSuite)进行开发,我使用“RunasSpringBootApp”选项运行应用程序,所以我不知道在哪里更改服务器配置。有人可以帮我吗?

可以在您使用的
应用程序.properties
应用程序.yaml
配置文件中定义端口

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

server.port=8090
server:
    port: 8090
或者,如果您使用的是
application.yaml
config,请按以下方式定义它:

server.port=8090
server:
    port: 8090

您可以在application.properties或application.yml中的下一行写入


server.port=8080

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

您不能在两个不同端口的同一spring boot应用程序下运行两个不同的服务。如果需要,您可以将一个服务移动到另一个spring boot应用程序。
但两种服务的端口号不相同。

您可以配置SprintBoot支持两个端口。常用的配置方法是使用
应用程序.properties
应用程序.yaml
作为@Madhu Bhat answer。在SprintBoot中配置另一个端口代码,如下所示:

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
创建一个连接器

        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);
如果使用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中创建容器

在这里查看:
这是一篇很好的文章

检查这篇重复的文章你可以通过应用程序来完成。属性我已经看到了,但是我需要在8080中放置一个服务,在8081中放置另一个服务,使用相同的应用程序可能会重复So,如果我需要访问两个不同的端口,我需要在两个不同端口上的两台服务器上运行应用程序?@AlessioPascucci如果您必须在不同端口上有两个服务,您需要将其作为两个不同的应用程序运行,每个应用程序都有自己的不同端口。但这需要在两个不同端口上运行两个不同的应用程序吗?