복붙노트

[SPRING] 두 개의 포트로 스프링 부트 설정하기

SPRING

두 개의 포트로 스프링 부트 설정하기

두 개의 다른 포트와 함께 Spring Boot에서 응용 프로그램을 구성하려고하지만 아직 가지지 못했습니다. 첫 번째 aproximation은 두 개의 컨트롤러로 이루어졌으며 container.setPort (8080)로 두 컨트롤러 내에 @Bean을 정의했습니다. 그리고 두 번째로 대두되는 것은 액츄에이터 종속성을 추가하고 managament의 포트를 변경했지만 내 응용 프로그램은 실행되지 않습니다. "이미 사용중인 주소 : 바인드", 응용 프로그램을 두 개의 포트로 구성하려면 어떻게합니까? 내가 관리자를위한 하나의 포트를 원하고 다른 포트가 내 API의 상담을 원한다.

해결법

  1. ==============================

    1.이전에 언급했듯이 server.port 및 management.port와 management.context-path 속성은 임베디드 컨테이너가 다른 포트 (액추에이터 끝점에 액세스하기위한 관리 관련 속성)에서 수신 대기하도록 설정할 수 있습니다.

    이전에 언급했듯이 server.port 및 management.port와 management.context-path 속성은 임베디드 컨테이너가 다른 포트 (액추에이터 끝점에 액세스하기위한 관리 관련 속성)에서 수신 대기하도록 설정할 수 있습니다.

    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
    

    Application.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에서 블로그를 보았습니다.

  2. ==============================

    2.액추에이터 관리 포트를 변경하려면 속성을 사용할 수 있습니다

    액추에이터 관리 포트를 변경하려면 속성을 사용할 수 있습니다

    management.port=8081
    

    전체 속성 목록보기

    최신 정보: 액츄에이터는이 경우 Embedded Tomcat (서블릿 컨테이너) 인스턴스를 하나 더 생성합니다. 여기와 여기를 참조하십시오.

  3. from https://stackoverflow.com/questions/36357135/configure-spring-boot-with-two-ports by cc-by-sa and MIT license