[Tomcat] Server Component


 [ Tomcat 공식문서 한글번역 링크 ]


[ 소개 ]

- Server 요소는 전체 Catalina 서블릿 컨테이너를 나타내며, conf/server.xml 설정파일의 가장 바깥에 있는 단일요소 이어야 한다.
- 이 요소의 속성은 서블릿 컨테이너 전체의 특성을 나타낸다.



[ 속성 ]

1. 공통 속성

- 모든 Server 의 구현체는 아래 속성을 지원한다.

속성 설명
className (org.apache.catalina.Server 인터페이스를 구현한) 사용할 구현체의 Java 클래스 이름.
클래스 이름을 지정하지 않으면 표준 구현체가 사용된다.
address Server 가 종료 명령을 대기하는 TCP/IP Address.
값을 지정하지 않으면 기본값으로 localhost 가 사용된다.
port
(필수)
Server 가 종료 명령을 대기하는 TCP/IP Port 번호. (기본값: 8005)
종료포트를 사용하지 않으려면 -1 로 설정한다.

[참고]
종료 포트를 사용하지 않도록 설정하는것은 Tomcat 을 Apache Commons Daemon (Windows 의 서비스로 실행하거나 Unix 에서 jsvc로 실행) 시작하는 경우에 적합하다.
만약 표준 쉘 스크립트(shutdown.sh|bat, catalina.sh|bat)을 통해 종료하려는 경우 Graceful Shutdown 이 정상적으로 수행되지 않아 사용할 수 없다. 

[추가 설명]
- 만일 1개의 서버에 여러개의 (톰캣) 인스턴스를 기동 시 포트가 중복되지 않도록 각각 다르게 설정해야 한다.

- 표준 쉘 스크립트로 종료 시 Graceful Shutdown 을 위해 Tomcat 내부 로직에서 종료 작업을 수행하지만 종료포트를 사용하지 않으면 내부 로직을 사용하지 않고 OS 에서 종료 시그널(kill -15 pid) 를 이용하여 프로세스를 종료한다. (catalina.sh 내부에서 확인 가능함)
- 일반적인 상황에서는 별다른 문제가 없지만 가급적 비활성화는 권장하지 않는다.
portOffset port 및 모든 중첩된 커넥터의 포트에 적용할 오프셋.
이 값은 0 이상의 정수이어야 하며 지정하지 않으면 기본값인 0 이 사용된다.
shutdown
(필수)
TCP/IP 연결로 지정된 포트 번호를 통해 수신받는 명령 문자열. (기본값: SHUTDOWN)
이 문자열을 수신 받으면 톰캣이 종료된다.
utilityThreads Service 가 (주기적인 작업 포함) 다양한 유틸리티 작업에 사용할 스레드 수를 설정한다. (기본값: 1)

특수 값인 0 을 사용하면 Runtime.getRuntime().availableProcessors() 값이 사용된다. (-0 이 아닌) 음수 값을 설정 시 Runtime.getRuntime().availableProcessors() + (음수값) 이 사용되며 결과가 1보다 작으며 1개의 스레드가 사용된다.

[추가 설명]
- Runtime.getRuntime().availableProcessors() 는 논리 코어 개수를 의미하며 하이퍼쓰레딩이 있는 물리 4코어의 CPU를 사용중일 경우에는 8 값을 리턴한다. (사실상 0 으로 셋팅 시 사용 가능한 CPU 를 UtilityThreads 에 모두 사용하겠다는 것인데 굳이 그럴 필요가 있을까 싶고, 기본값을 그대로 둬서 1개의 Thead 만 설정하는것이 좋다고 생각함.)
- UtilityThead 에 대한 리소스 사용량에 대한 이야기도 있다. (링크)

1004lucifer

2. 표준 구현 속성

- Server 의 표준 구현체는 org.apache.catalina.core.StandardServer 이며, 위 공통 속성 외에도 다음과 같은 속성을 지원한다.

속성 설명
utilityThreadsAsDaemon Utility Thead 에 대한 데몬 플래그 값을 설정한다. (기본값: false)
periodicEventDelay Server 에 구성된 라이프사이클 리스너의 주기적인 (라이프사이클)이벤트 호출 사이의 지연시간 (기본값: 10초)
값은 초 단위이며, 0 또는 음수인경우 호출이 비활성화 된다.


[ 중첩 구성 요소 ]

- Server 내에 포함 가능한 요소
 1) Service - 하나 이상 추가 가능
 2) GlobalNamingResources - Server 의 JNDI Global 리소스를 구성한다.



[ 특수 기능 ]

- Server 와 관련된 특수기능 없음.


참고
 - https://tomcat.apache.org/tomcat-11.0-doc/config/server.html



[ 실습 ]

1. shutdown 속성


2. port 속성


댓글