헤르메스 LIFE

[Tomcat] Tomcat에서의 JNDI JDBC 설정 #1 본문

Server

[Tomcat] Tomcat에서의 JNDI JDBC 설정 #1

헤르메스의날개 2020. 11. 19. 00:00
728x90

 


필수 라이브러리

commons-dbcp.jar
commons-collections.jar
commons-pool.jar

방법1.

server.xml 설정

<host ....="">
    <context docbase="myspring" path="/myspring" reloadable="true" source="org.eclipse.jst.jee.server:myspring">
        <resourceparams name="jdbc/MY_DB">
    <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@localhost:1521:ORCL</value>
    </parameter>
    <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
    </parameter>
    <parameter>
        <name>username</name>
        <value>SCOTT</value>
    </parameter>
    <parameter>
        <name>password</name>
        <value>TIGER</value>
    </parameter>
    <parameter>
        <name>maxWait</name>
        <value>100</value>
    </parameter>
    <parameter>
        <name>maxActive</name>
        <value>5</value>
    </parameter>
    <parameter>
        <name>maxIdle</name>
        <value>30000</value>
    </parameter>
        </resourceparams>
    </context>
</host>

 

방법2.

server.xml 설정

<host ...="">
    <context docbase="myspring" path="/myspring" reloadable="true" source="org.eclipse.jst.jee.server:myspring">
        <resource description="Spring Project" name="jdbc/MY_DB" auth="Container" type="javax.sql.DataSource" 
                  maxactive="100" maxidle="30" maxwait="10000" username="SCOTT" password="TIGER" 
                  driverclassname="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:ORCL">
        </resource>
    </context>
</host>

 

방법3.

server.xml 설정

<host ....="">
    <context docbase="myspring" path="/myspring" reloadable="true" source="org.eclipse.jst.jee.server:myspring">
</context>
</host>

context.xml

<context>
    <watchedresource>WEB-INF/web.xml</watchedresource>
    <!-- 사실 Resource 구분은 삽입만 하면 되었던겁니다. -->
    <resource description="Spring Data Source" name="jdbc/MY_DB" auth="Container" type="javax.sql.DataSource"
              maxactive="100" maxidle="30" maxwait="10000" username="SCOTT" password="TIGER"
              driverclassname="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@112.216.80.148:1521:ORCL">
    </resource>
</context>

 

공통설정

web.xml 설정

<resource-ref>
    <res-ref-name>jdbc/MY_DB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

 

중복되는 설정의 우선 순위

1. server.xml

2. $CATALINA_HOME/conf/context.xml

3. /META_INFO/context.xml

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


각 위치의 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 파일은 무시된다.

728x90