이장은 보다 전문적인 내용이나 XML 에 관련된 내용이므로 필독사항이 아니다. 관심있는 분만 읽어보기 바란다.
또한 이 장은 server.dtd 에 대해 완벽한 설명이 아니므로 관심있는 분은 XML 관련 문서를 참고하길 바란다.
server.dtd은 XML 마크업 언어의 메타 파일인 DTD(Document Type Declarations)파일이며, tomcat 설정 파일인 server.xml파일에서 사용되는 마크업언어를 정의하는 파일인 TOMCAT_HOME/conf/server.dtd 파일이다. 즉, server.dtd는 server.xml 의 문법을 정의 하는 파일이 되는 셈이다.
참고로 마크업 언어의 메타 파일이란 새로운 마크업 언어를 정의하는 파일이다. 또한, tomcat은 server.dtd 에서 정의된 내용을 참조하여 server.xml 의 내용을 이해 할 수 있게 되며, 사용자 또한 server.dtd 에서 정의된 문법(?)대로 server.xml에 각 설정등을 하게 된다.
<?xml version="1.0" encoding="ISO-8859-1"?>
위의 라인은 XML 파일임을 나타낸다.
<!ELEMENT Server (ContextManager+)>
Server 라는 요소(element)를 정의 하며 (ContextManager) 는 server 라는 요소에 포함된다. (ContextManager+) 에서 "+"는 하나 이상을 의미하며 여기서는 ContextManager 이라는 요소가 Server 요소내에 최소한 하나가 있어야 하며 하나 이상 있어도 된다는 의미이다. 다음은 사용 예이다.
example 1)
<Server>
<ContextManager></ContextManager>
</Server>
example 2)
<Server>
<ContextManager></ContextManager>
<ContextManager></ContextManager>
<ContextManager></ContextManager>
</Server>
<!ATTLIST Server
adminPort NMTOKEN "-1"
workDir CDATA "work">
ATTLIST 는 속성을 의미하며 Server 요소의 속성을 정의한다. 다음은 예이다.
<Server adminPort="8808" workDir="workdirect" >
<ContextManager></ContextManager>
</Server>
<!ELEMENT ContextManager (Context+, Interceptor*, Connector+)>
위의 예는 ContextManager 요소의 하위 요소를 정의 한다. Interceptor* 의 *은 0개 이상을 의미하므로 Interceptor 가 없어도 되고 하나 이상 있어도 된다. 다음은 예이다.
<Server>
<ContextManager>
<Context></Context>
<Connector></Connector>
<Connector></Connector>
</ContextManager>
</Server>
<!ATTLIST ContextManager
port NMTOKEN "8080"
hostName NMTOKEN ""
inet NMTOKEN "">
위의 내용은 요소 ContextManager 의 속성을 정의 한다. NMTOKEN 은 문자열의 형으로 보아도 되며 XML 의 이름 설정에 대한 제한에 맞아 떨어져야 한다. "8080", "" 등은 각 속상 값의 디폴트 값으로서 값을 설정 하지 않을 경우를 대비한 것이다. 다음은 사용 예이다.
<Server>
<ContextManager port="8007"></ContextManager>
</Server>
<!ELEMENT Context EMPTY>
Context 요소를 정의 한다. 값은 없다(EMPTY).
<!ATTLIST Context
path CDATA #REQUIRED
docBase CDATA #REQUIRED
defaultSessionTimeOut NMTOKEN "30"
isWARExpanded (true | false) "true"
isWARValidated (false | true) "false"
isInvokerEnabled (true | false) "true"
isWorkDirPersistent (false | true) "false">
Context요소의 속성을 정의한다. CDATA 는 문자열을 의미하며 #REQUIRED 는 무조건 값이 있어야 됨을 의미하며 (true | false) 는 true 나 false 중에서 값이 나와야 함을 의미한다. 그 다음의 "true" 나 "false"는 디폴트 값이다. 다음은 사용 예이다.
<Server>
<ContextManager>
<Context path="/test" docBase="webapps/test"></Context>
</ContextManager>
</Server>
<!ELEMENT Interceptor EMPTY>
위의 내용은 Interceptor 요소를 정의한다.
<!ATTLIST Interceptor
className NMTOKEN #REQUIRED
docBase CDATA #REQUIRED>
위의 내용은 Interceptor의 속성을 정의한다.
이하 생략