-이 내용은 톰캣 버전 7 을 기준으로 한다.

 

 

1. Context 란

 

Context 설정은 톰캣에서 구동되는 하나의 웹 어플리케이션 자체의 설정을 의미한다. 주요 설정으로 컨텍스트패스, 어플리케이션 디렉토리 설정이 있다. 톰

캣이 요청을 받으면 Catalina 가 요청에 맞는 Context 를 찾고, Context 는 자신이 설정된 어플리케이션의 deployment descriptor file(web.xml) 을 기반으로 전달받은 요청을 서블릿에게 전달하여 처리되도록 한다.

 

클라이언트 HTTP request -> Catalina -> Context -> servlet -> 클라이언트 response

 

 

 

2. Context 설정의 위치

 

Context 설정은 여러 위치에 동시에 존재할 수 있다.

 

server.xml 의 <Host> 의 자식 엘레멘트.

$CATALINA_HOME/conf/context.xml

$CATALINA_HOME/conf/[enginename]/[hostname]/ROOT.xml

$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default

$CATALINA_HOME/conf/[enginename]/[hostname]/[contextpath].xml

어플리케이션의 /META_INF/context.xml

 

실제로 이 설정들이 모두 필요한 경우는 드물다. 일반적으로 

server.xml, 

$CATALINA_HOME/conf/context.xml, 

/META_INF/context.xml, 

$CATALINA_HOME/conf/[enginename]/[hostname]/[contextpath].xml

정도면 충분하다.

 

 

 

3. 중복되는 설정의 우선순위

 

다만 여기에 다음과 같은 우선순위가 있어, 중복된 설정이 존재할 경우 높은 우선순위의 설정이 적용된다.

 

1. server.xml

2. $CATALINA_HOME/conf/context.xml

3. /META_INF/context.xml

4. $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default

 

 

/META_INF/context.xml 에서 Context 에 더 높은 우선순위를 부여하기 위해서는 override="true" 를 설정할 수 있다. 이 경우 다른 어떤 설정보다 해당 설정이 우선시된다.

 

 

 

4. 각 위치의 Context 의 역할

 

server.xml 의 <Context>

 

전역적인 Context 설정에 쓰인다. 여기에 정의한 설정은 해당 톰캣에서 구동되는 모든 어플리케이션에 적용된다. 하지만 사용이 권장되지 않는다. 톰캣 4.x 버전까진 여기에 설정을 했으나, 버전 5.x 부터는 별도 context.xml 에 설정할 것을 권고한다. 왜냐하면 server.xml 의 설정 변경을 실제 구동 서버에 적용하기 위해서는 서버를 재시작해야 하는데, 하나의 Context 설정을 수정함으로 필요 이상의 영향도를 가지게 되기 때문이다.

 

 

$CATALINA_HOME/conf/context.xml

 

전역적인 Context 설정에 쓰인다. server.xml 에의 전역적인 설정을 할 수 있다. 서버에서의 Context 설정은 여기에 하자.

 

 

$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default

 

특정 호스트의 전역적인 Context 설정에 쓰인다. 호스트 안에서의 디폴트 설정이 필요할 때 쓰인다.

 

 

$CATALINA_HOME/conf/[enginename]/[hostname]/ROOT.xml

 

context.xml.default 와 같은 역할을 한다. 'ROOT.xml' 이라는 고정된 이름은 톰캣에 의해 Context 설정용 파일로서 약속된 이름이다.

 

 

$CATALINA_HOME/conf/[enginename]/[hostname]/[contextpath].xml, /META-INF/context.xml

 

특정 호스트의 특정 컨텍스트패스에 한정되는 Context 설정을 할 수 있다. <Host> 의 copyXML 설정이 'true' 일 경우, /META-INF/context.xml 파일이 존재하면 톰캣이 이 파일을 자동으로 컨텍스트패스에 맞는 이름으로 변경하여 $CATALINA_HOME/conf/[enginename]/[hostname]/ 에 복사한다. 단, 만약 해당 이름의 파일이 이미 존재할 경우, /META-INF/context.xml 파일은 무시된다.

 

+ Recent posts