SERVER
[Tomcat] JNDI, Tomcat 설정
보겸삼촌
2021. 1. 28. 12:08
이번 포스팅에서는 톰캣에서 JNDI를 설정하는 방법에 대해 기술할 것, 1.1에서는 MySQL, 1.2에서는 Oracle 세팅하는 방법이며 세팅할 DB를 결정하면 됨 |
1. JNDI - Tomcat 설정
: JNDI는 WAS에 설정하는 것
1.1. MySQL Setting
<GlobalNamingResources>
<Resource
name="jdbc/EgovData"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
validationQuery="SELECT 1"
validationInterval="30000"
username="root"
password="passwd"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myDB?useUnicode=true&characterEncoding=utf8&autoReconnect=true"
/>
</GlobalNamingResources>
- username, password은 DB의 사용자명, 패스워드를 입력하고, myDB 자리에 DB명을 입력할 것
1.2. Oracle Setting
<GlobalNamingResources>
<Resource
name="jdbc/EgovDataOracle"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
validationQuery="SELECT 1 FROM DUAL"
validationInterval="30000"
username="system"
password="manager11"
driverClassName="oracle.jdbc.driver"
url="jdbc:mysql://localhost:1521/orcl"
/>
</GlobalNamingResources>
- username, password은 DB의 사용자명, 패스워드를 입력하고, orcl 자리에 DB명을 입력할 것
1.3. ResourceLink 추가
: 보통 Tomcat 설치폴더/conf/context.xml에 추가해야하나, teletalk 프로젝트에서는 WebContent/META-
INF/context.xml에 위치
// WebContent/META-INF/context.xml
<Context>
<ResourceLink global="jdbc/프로젝트_DS" name="jdbc/프로젝트_DS" type="javax.sql.DataSource" />
</Context>
- 이 때, name, global의 값을 맞춰줌
1.4. web.xml 코드 추가
// 프로젝트/WEB-INF/web.xml
<resource-ref>
<description></description>
<res-ref-name>jdbc/orcl</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
1.5. context-datasource.xml 코드 추가 (Spring의 경우)
// 프로젝트/src/spring/context-datasource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
<property name="username" value="user"/>
<property name="password" value="password"/>
</bean>
1.6. properites 수정
: 프로젝트 WAS JNDI 사용 선언 위치
// 프로젝트/src/spring/context-datasource.xml
<bean id="jdbc/프로젝트" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/프로젝트_DS" />
</bean>