SERVER
[Tomcat] server.xml 구조
보겸삼촌
2021. 1. 28. 11:33
톰캣의 server.xml 은 메인 설정 파일이며, Tomcat startup 초기 설정을 명세하는 책임이 있음 |
1. server.xml 태그 예시
<Server>
<Listener />
<GlobalNamingResources>
<Resource>
</GlobalNamingResources>
<Service>
<Connector/>
<Engine>
<Realm>
<Realm />
</Realm>
<Logger>
<Host>
<Value>
<Context>
</Host>
</Engine>
</Service>
</Server>
2. 태그 상세
태그 | 설명 |
Server | root element, shutdown port 지정, 전체 설정파일의 최상위 element |
Listener | 리스너 |
GlobalNaming Resources |
Server의 하위 컴포넌트, Resource 태그 등을 통해 전역 resource를 설정. JNDI의 전역 자원을 나타냄 |
Resource | 웹 애플리케이션 배치 디스크립터의 <resource-ref>와 <resource-env-ref> element의 JNDI 탐색(lookup)에 대해 반환될 자원의 특성도 선언 가능. 그리고, 어떤 자원에 대해 객체팩토리를 사용하도록 설정하는데 사용할 property를 설정하기 위해서는 반드시 그 자원과 같은 이름으로 Resource Parameters를 추가로 정의해야 함. · auth : 해당 자원관리자에 인증할 때 웹 애플리케이션 프로그램의 코드 상에서 직접 인증할 것인지, 애플리케이션의 작동에 따라 컨테이너가 직접 인증할지를 지정(Application / Container) · description : 자원에 대한 사람이 읽기 쉬운 간단한 설명 · name : 생성할 자원의 이름, java.comp/env Context에 대한 상대적인 이름 · scope : 이 자원관리자를 통해 얻어진 연결의 공유를 허가할 것인지 지정(Shareable / Unshareable) · type : 웹 애플리케이션이 이 자원에 대해 탐색을 실행할 때 받고자 하는 Java 타입을 나타내는 완전한 Java 클래스명 |
Service | 독립적인 Tomcat의 서비스, Connector Client와 요청을 주고 응답을 받는 Interface. 하나의 Engine과 결합된 Connector들의 모임 |
Connector | 어떤 특정 Service에 요청을 보내는 그리고 응답을 받는 외부 Client들과의 연결점(interface)를 의미. 다시 말하면, 요청을 받아서 응답이 반환되는 종점(endpoint)를 나타냄. 각 Connector는 처리를 담당하는 관련된 Container로 요청을 전달함. 기본 값으로 8080포트에 non-SSL HTTP/1.1 Connector가 설정되어 있고, 예시로는 HTTP, AJP 등 |
Engine | 적절한 Host로 처리를 넘기는 역할 |
Realm | 영역(realm)을 설정하여 사용자와 사용자의 역할을 저장할 데이터베이스를 이 Engine에 포함된 모든 Host와 Context에서 공유할 수 있도록 함. Database 연결, Single Sing On, Access Log 등 부가기능 이용 |
Valve | 각 호스트 접속 시 영향을 주는 것들, RemoteAddrValve 같이 IP 필터 같은 필터 역할을 하는 것도 있음 |
Logger | 이 Engine에 대한 모든 로그 메시지를 받아서 처리할 로거를 설정 |
Host | 가상 호스트 정의, 특정 가상호스트에 대한 모든 요청을 다룸 · name : 호스트 이름 · appBase : 기본 경로 |
Context | 가상 호스트에서 동작하는 하나의 웹 어플리케이션 각 웹 어플리케이션은 웹 어플리케이션 아카이브(WAR, Web Application Archive) 파일 또는 패킹하지 않은 채로 그에 상응하는 내용을 담고 있는 디렉토리를 기준으로 하며, 이러한 내용은 Servlet 스펙에 설명되어 있음. 각 HTTP 요청을 처리하는데 사용할 웹 어플리케이션의 선택은 각각 정의된 Context의 경로에 대해 요청 URI의 가능한 전치어(prefix) 중 가장 길게 매칭 가능한 Context path를 가진 Context를 선택하면서 생성 선택된 Context는 수신된 요청을 처리하기 위해 적절한 Servlet을 선택함. 이 선택 작업은 웹 어플리케이션 배치 디스크립터 파일(/WEB-INF/web.xml)에 정의된 Servlet 매핑 정보에 의해 이루어짐. · docBase : 이 웹 어플리케이션에 대한 Document Base (Context Root) 디렉토리, 또는 WAR 파일의 경로명을 나타냄. 이 디렉토리나 WAR 파일에 대한 절대경로명 혹은 이 Context가 정의된 Host의 appBase 디렉토리에 대한 상대경로를 지정할 수 있음. · path : 이 웹 어플리케이션의 Context path를 나타내며, 각 요청의 URI의 시작부분이 Context path와 같 을 때 해당 웹 어플리케이션이 그 요청을 처리함. 하나의 특정 Host 내의 Context path는 모두 각각 유일해야 함. · className : 사용할 Java 구현체 클래스의 이름 이 클래스는 반드시 org.apache.catalina.Context Interface를 구현해야 함. |
3. 소스 내 요약
<!-- server.xml 의 root element, server의 shutdown port를 지정 함 -->
<Server port="8005" shutdown="SHUTDOWN">
| <!-- server는 1개 이상의 service를 가질 수 있지만, 보통은 server.xml을 분리해서 관리-->
+---<Service name="Catalina"> <!-- service는 독립적인 톰캣의 서비스 이다. -->
| <!-- Connector Client와 요청을 주고 응답을 받는 Interface이다. -->
+---<Connector port="8080" protocol="HTTP/1.1">
| <!-- Connector 에는 HTTP와 AJP등이 있다. -->
+---<Connector port="8009" protocol="AJP/1.3"> <!-- Apache Jserv Protocol -->
| <!-- Engine은 적절한 Host로 처리를 넘기는 역할을 한다. -->
+---<Engine name="Catalina" defaultHost="localhost">
| <!-- Realm, Value Component를 이용하면 Database연결, Single Sing On,
+---<Realm> Access Log등 부가기능을 이용 할 수 있다. -->
|
+---<Valve>
|
+---<Logger>
| <!-- 가상 호스트를 정의한다. -->
+---<Host appBase="webapps">
| <!-- 가상호스트에서 동작하는 하나의 웹 어플리케이션 이다. -->
+---<Context path="" docBase="C:\workspace\project\wiki ">
|
+---<Valve>
|
+---<Realm>
|
+---<Logger>