server.xml의 영어 설명부분을 한글로 번역해 놓았다.
<!-- Example Server Configuration File --> <!-- Note: 컴포넌트들은 각각의 부모-자식 관계에 따라 중첩(nested) 되었음 --> <!-- "Server" 는 전체 JVM 을 나타내는 싱글톤 요소입니다. 이것은 하나 이상의 "Service" 인스턴스를 갖고 있습니다. 서버는 지정된 포트를 통해 shutdown 명령을 받습니다. Note: "Server" 는 스스로가 "Container" 가 아니기 때문에, "Valves" 또는 "Loggers" 같은 서브 컴포넌트를 "Server" 와 같은 레벨에서 정의하면 안됩 니다. --> <Server port="8005" shutdown="SHUTDOWN" debug="0"> <!-- "Service" 는 한 개의 "Container" 를 공유하는 하나 이상의 "Connectors" 의 집합체입니다. (이 컨테이너 안에서 웹어플리케이션이 돌아갑니다). 보통 은, 이 컨테이너가 "Engine" 입니다만, 요구되지는 않습니다. Note: "Service" 는 스스로가 "Container" 가 아니기 때문에, "Valves" 또는 "Loggers" 같은 서브 컴포넌트를 "Server" 와 같은 레벨에서 정의하면 안됩니다. --> <!-- Tomcat Stand-Alone Service 로 설정하기 --> <Service name="Tomcat-Standalone"> <!-- "Connector" 는 요청을 받아서, 응답이 반환되는 종점(endpoint)을 나타냅니 다. 각 커넥터는 처리를 담당하는 관련된 "Container"(보통 "엔진")로 요청을 전달해줍니다. 기본값으로, 8080포트에 non-SSL HTTP/1.1 커넥터가 설정되어있습니다. SSL HTTP/1.1 커넥터 역시 사용하려면 아래에 있는 지시를 따라서 하고, 두번 째 커넥터 엔트리의 주석표시를 지워주시면 됩니다. SSL 지원은 다음 단계를 거쳐야 합니다: * JSSE 1.0.2 또는 이후 버전을 다운받아서 설치하고, JAR 파일들을 "$JAVA_HOME/jre/lib/ext" 디렉토리에 복사해 놓습니다. * "$JAVA_HOME/jre/lib/security/java.security" 를 편집하고 security.provider.2=com.sun.net.ssl.internal.ssl.Provider 를 추가합 니다. * 실행: keytool -genkey -alias tomcat -keyalg RSA 패스워드 값"changeit" 으로 실행합니다. 기본적으로, DNS lookups 는 웹어플리케이션이 request.getRemoteHost() 를 부를 때 동적하도록 되어있습니다. 이것은 성능에 영향을 줄 수 있기 때문에, "enableLookups" 속성을 "false" 로 바꿔주면 이 기능을 사용하지 않을 수 있습니다. DNS lookups 가 사용하지 않게 되면 request.getRemoteHost() 는 remote client 의 IP 주소의 String 버전을 반환할 것입니다. --> <!-- 8080 포트에 non-SSL HTTP/1.1 Connector 설정하기 --> <Connector className="org.apache.catalina.connector.http.HttpConnector" port="80" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="60000"/> <!-- Note : 커넥션 타임아웃을 사용하지 않으려면, connectionTimeout 값을 -1로 수정해 주세요.--> <!-- 8443 포트에 SSL HTTP/1.1 Connector 설정하기 --> <!-- <Connector className="org.apache.catalina.connector.http.HttpConnector" port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0" scheme="https" secure="true"> <Factory className="org.apache.catalina.net.SSLServerSocketFactory" clientAuth="false" protocol="TLS"/> </Connector> --> <!-- 8081 포트에 Proxied HTTP/1.1 Connector 설정하기 --> <!-- 사용법에 대한 자세한 내용은 proxy 문서를 보십시오. --> <!-- <Connector className="org.apache.catalina.connector.http.HttpConnector" port="8081" minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0" connectionTimeout="60000" proxyPort="80"/> --> <!-- 8082 포트에 non-SSL HTTP/1.0 Test Connector 설정하기 --> <!-- <Connector className="org.apache.catalina.connector.http10.HttpConnector" port="8082" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0"/> --> <!-- Engine 은 (Catalina 에서) 모든 요청을 처리하는 입력지점을 나타냅니다. Tomcat stand alone 용으로 구현된 Engine 은 요청에 포함된 HTTP 헤더를 분 석하고, 적당한 Host (가상 호스트) 로 전달하는 역할을 합니다. --> <!-- 컨테이너 구조에서 top level 컨테이너 설정하기 --> <Engine name="Standalone" defaultHost="localhost" debug="0"> <!-- 요청 dumper 밸브는 Tomcat 의 인스턴스의 모든 요청을 받는 동안 들어온 요청 헤더와 쿠키, 보내질 응답 헤더와 쿠키에 대해 유용한 디버깅 정보를 덤프합니다. 만일 특정한 가상호스트, 또는 특정한 어플리케이션에 들어온 요청에만 만 관심을 갖고자 한다면, 이 요소를 해당하는 <Host> 나 <Context> 엔트리 아래에 위치시켜주십시오. 모든 서블릿 2.3 컨테이너에 유동적인 유사한 동작구조를 위해서, 예제 어플리케이션에 있는 "RequestDumperFilter" 필터를 확인하십시오. (소스는 "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters" 위치에 있을 것입니다.) 기본적으로 Request dumping 기능은 사용하지 않는 것으로 되어있습니다. 다음의 요소에서 주석을 빼면 사용할 수 있습니다. --> <!-- <Valve className="org.apache.catalina.valves.RequestDumperValve"/> --> <!-- 하위수준에서 지정되지 않았다면 사용되는 Global Logger --> <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/> <!-- 이 Realm 이 여기에 있기 때문에, 인스턴스는 전체적으로 공유됩니다. --> <Realm className="org.apache.catalina.realm.MemoryRealm" /> <!-- 데이터베이스에 저장되고 JDBC 를 통해서 접근하는 Realm 을 사용하려면 위 Realm 을 다음의 Realm 중 하나와 대치하십시오. --> <!-- <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/authority?user=test;password=test" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" /> --> <!-- <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL?user=scott;password=tiger" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" /> --> <!-- <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="sun.jdbc.odbc.JdbcOdbcDriver" connectionURL="jdbc:odbc:CATALINA" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" /> --> <!-- default virtual host 설정하기 --> <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"> <!-- 보통, 사용자는 각각의 웹 어플리케이션에 인증을 해줘야만 합니다. 사용자가 security 제한에 걸려있는 보호된 자원 중에서 처음에 걸리는 인증을 한번만 통과하고, 이 가상호스트 안의 "모든" 웹어플리케이션에 통과된 인증으로 접근하게 하려면 아래 엔트리의 주석을 해제하십시오. --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" debug="0"/> --> <!-- Access log는 이 가상호스트에 접속하는 모든 요청을 처리합니다. 기본값은 로그 파일은 $CATALINA_HOME 에 상대적인 "logs" 디렉토리에 생성됩니다. "directory" 속성을 이용해서 원하는 다른 디렉토리로 지정할 수 있습니다. ($CATALINA_HOME 에 대해) 상대적인 디렉토리나 또는 원하는 디렉토리의 절대 경로를 써주면 됩니다. --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common"/> <!-- 이 가상 호스트에 관계된 모든 Context 에 의해 공유된 Logger. 기본값은 (FileLogger 를 사용할 때), 로그 파일들은 $CATALINA_HOME 에 상대적인 "logs" 디렉토리에 생성됩니다. "directory" 속성을 이용해서 원하는 다른 디렉토리로 지정할 수 있습니다. ($CATALINA_HOME 에 대해) 상대적인 디렉 토리나 또는 원하는 디렉토리의 절대 경로를 써주면 됩니다. --> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/> <!-- 각각의 웹 어플리케이션에 대한 프로퍼티 설정. 이것은 기본값과는 다른 프로 퍼티를 설정하기 윈할 때나, 웹어플리케이션 document 루트 디렉토리가 가상 호스트의 appBase 디렉토리와 다른 곳에 있을 경우에만 필요합니다. --> <!-- Tomcat Root Context --> <!-- <Context path="" docBase="ROOT" debug="0"/> --> <!-- Tomcat Examples Context --> <Context path="/examples" docBase="examples" debug="0" reloadable="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_examples_log." suffix=".txt" timestamp="true"/> <Ejb name="ejb/EmplRecord" type="Entity" home="com.wombat.empl.EmployeeRecordHome" remote="com.wombat.empl.EmployeeRecord"/> <!-- PersistentManager: 영속적인 세션을 테스트 하기위해서는 아래 섹션의 주석을 지워주십시오. saveOnRestart: true 값일 경우, Catalina 가 shutdown 될 때 모든 살아있는 세션들은 다른 세팅과는 상관없이, Store 에 저장될 것입니다. startup 할 때 Store 에 있는 모든 세션들 은 자동으로 로드됩니다. expiration 이 지난 세션들은 양쪽 의 경우에 무시됩니다. maxActiveSessions: 0 이상의 값일 경우, 너무 많은 살아 있는 세 션이 있다면 몇몇은 없어져버리는 결과가 있을 수 있습니다. minIdleSwap 은 이것을 제한합니다. -1 은 무한 세션을 허가한 다는 뜻입니다. 0 은 사용 후 세션은 거의 모두 없어져 버립니다 - 사용자들에게 인지될 정도로 느리게 될 것입니다. minIdleSwap: 세션은 적어도 이기간 동안 idle 상태이어야 합니다. (초 단위로) 없어지기 전에 말이죠. maxActiveSessions. 이것은 사이트가 아주 활발할 때 thrashing 을 피하게 합니다. -1 이나 0 은 minimum 이 없다는 뜻입니다 - 세션 은 어느때라도 소멸될 수 있습니다. maxIdleSwap: (초 단위로) 세션은 이 기간동안 idle 상태면 소멸됩 니다. minIdleSwap 이 보다 높다면, 그것으로 바꿔집니다. 이것은 정확하지 않습니다: 주기적으로 확인합니다. -1 은 maxActiveSessions 값으로 인해 소멸되어야 해도, 세션은 소멸되지 않음을 의미합니다. 0 이상으로 세팅되면, startup 할 때 Store 에 있는 모든 세션은 로드될 것을 보장합니다. maxIdleBackup: (Store 에 저장되었지만, active 메모리에 남아있는) 세션은 백업될 것입니다. 이 기간동안 idle 상태고, startup 할 때 Store 에 있는 모든 세션들이 로드될 것입니다. -1 로 설정되었다면 세션은 백업되지 않을 것이고, 0 은 사용된 뒤에 잠깐 백업된다는 것을 의미합니다. Store 에 있는 세션을 지우려면, maxActiveSessions, maxIdleSwap, minIdleBackup 모두를 -1 로, saveOnRestart 는 false로 세팅한 후, Catalina 를 재시동합니다. --> <!-- <Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1"> <Store className="org.apache.catalina.session.FileStore"/> </Manager> --> <Environment name="maxExemptions" type="java.lang.Integer" value="15"/> <Parameter name="context.param.name" value="context.param.value" override="false"/> <Resource name="jdbc/EmployeeAppDb" auth="SERVLET" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/TestDB"> <parameter><name>user</name><value>sa</value></parameter> <parameter><name>password</name><value></value></parameter> <parameter><name>driverClassName</name> <value>org.hsql.jdbcDriver</value></parameter> <parameter><name>driverName</name> <value>jdbc:HypersonicSQL:database</value></parameter> </ResourceParams> <Resource name="mail/Session" auth="Container" type="javax.mail.Session"/> <ResourceParams name="mail/session"> <parameter> <name>mail.smtp.host</name> <value>localhost</value> </parameter> </ResourceParams> </Context> </Host> </Engine> </Service> <!-- MOD_WEBAPP 커넥터는 apache 1.3 과 서블릿 컨테이너로 Tomcat 4.0 을 연결하는 데 쓰입니다. WebApp 모듈 배포판에 포함된 어떻게 만드는지에 대해 설명하는 README.txt 파일을 읽어보십시오. (또는 "jakarta-tomcat-connectors/webapp" CVS repository 를 확인해 보십시오.) Apache 쪽에서 설정하려면, 먼저 "httpd.conf" 에 설정되어진 "ServerName" 과 "Port" 지시자를 확인해야 합니다. 그리고, "httpd.conf" 파일 아래에 다음과 같은 줄을 넣어줍니다: LoadModule webapp_module libexec/mod_webapp.so WebAppConnection warpConnection warp localhost:8008 WebAppDeploy examples warpConnection /examples/ 이 후에 (필요하다면 Tomcat 을 재시동한 후) Apache 를 재시작하면 연결이 됩니 다. Apache 를 통해서 "WebAppDeploy" 지시자에 있는 모든 어플리케이션들이 실 행하는 것을 보실 수 있습니다. --> <!-- Apache-Connector Service 설정하기 --> <Service name="Tomcat-Apache"> <Connector className="org.apache.catalina.connector.warp.WarpConnector" port="8008" minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0"/> <!-- "localhost" 를 Apache "ServerName" 에 설정된 값으로 대치해주십시오 --> <Engine className="org.apache.catalina.connector.warp.WarpEngine" name="Apache" debug="0" appBase="webapps"> <!-- 하위 레벨에서 설정되지 않았다면 Global logger --> <Logger className="org.apache.catalina.logger.FileLogger" prefix="apache_log." suffix=".txt" timestamp="true"/> <!-- 이 Realm 이 여기 있기 때문에, 전체적으로 이 Realm 이 공유됩니다. --> <Realm className="org.apache.catalina.realm.MemoryRealm" /> </Engine> </Service> </Server>