<!-- 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>