1. 개요

Spring Boot에 AJP 포트 설정을 추가하는 방법이다.


2. 방법 I

2-1. ContainerConfig 클래스 추가

import org.apache.catalina.connector.Connector;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ContainerConfig {
    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return container -> {
            TomcatEmbeddedServletContainerFactory tomcat =
                    (TomcatEmbeddedServletContainerFactory) container;

            Connector ajpConnector = new Connector("AJP/1.3");
            ajpConnector.setPort(8109);
            ajpConnector.setSecure(false);
            ajpConnector.setAllowTrace(false);
            ajpConnector.setScheme("http");
            tomcat.addAdditionalTomcatConnectors(ajpConnector);
        };
    }
}

2-2. 부팅 로그 확인 

2018-02-13 14:05:45.706  INFO 12972 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8180 (http) 8109 (http)
2018-02-13 14:05:49.681  INFO 12972 --- [           main] org.apache.coyote.ajp.AjpNioProtocol     : Initializing ProtocolHandler ["ajp-nio-8109"]
2018-02-13 14:05:49.699  INFO 12972 --- [           main] org.apache.coyote.ajp.AjpNioProtocol     : Starting ProtocolHandler ["ajp-nio-8109"]
2018-02-13 14:05:49.779  INFO 12972 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8180 (http) 8109 (http)

3. 방법 II

3-1. application.properties

다음 설정을 추가한다.

tomcat.ajp.protocol=AJP/1.3
tomcat.ajp.port=8109
tomcat.ajp.enabled=true

3-2. ContainerConfig 클래스 추가

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ContainerConfig {
    @Value("${tomcat.ajp.protocol}")
    String ajpProtocol;

    @Value("${tomcat.ajp.port}")
    int ajpPort;

    @Value("${tomcat.ajp.enabled}")
    boolean tomcatAjpEnabled;

    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return container -> {
            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            if (tomcatAjpEnabled) {
                Connector ajpConnector = new Connector(ajpProtocol);
                ajpConnector.setPort(ajpPort);
                ajpConnector.setSecure(false);
                ajpConnector.setAllowTrace(false);
                ajpConnector.setScheme("http");
                tomcat.addAdditionalTomcatConnectors(ajpConnector);
            }
        };
    }
}

3-3. 부팅 로그 확인

2018-02-13 14:12:29.969  INFO 6932 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8180 (http) 8109 (http)
2018-02-13 14:12:33.171  INFO 6932 --- [           main] org.apache.coyote.ajp.AjpNioProtocol     : Initializing ProtocolHandler ["ajp-nio-8109"]
2018-02-13 14:12:33.184  INFO 6932 --- [           main] org.apache.coyote.ajp.AjpNioProtocol     : Starting ProtocolHandler ["ajp-nio-8109"]
2018-02-13 14:12:33.228  INFO 6932 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8180 (http) 8109 (http)