그래도 개발자일 때 좋았다

Tomcat에 JNDI DataSource 설정 본문

IT Misc.

Tomcat에 JNDI DataSource 설정

실러캔스 2012. 10. 26. 23:26

사실 요즘 들어서 이런 기초적인 것에 관심을 많이 가지게 되었다.

그래서 알아보게 된 것이 바로 Tomcat에 JNDI DataSource 설정하는 방법 등이다.

이것을 시작으로 실제로 사용하게 되었던 것들을 조금씩 적어보려고 한다.

(그래야지 여기 오기만해도 기억을 더듬을 수 있을 것 같기에)

 

먼저 DataSource를 설정하는 방법에는 여러 가지가 있다.

Spring Framework 등의 Framework에 설정하는 방법이 있을 수 있고, Tomcat 등과 같은 WAS에 설정하는 방법이 있다.

여기서는 WAS에 설정하는 방법중에서 Tomcat에 설정하는 방법을 끄적여보고자 한다.

 

1. 준비물

- Apache Tomcat(버전은 6.0 이상을 권장)

 

2. 설정 방법

여러 가지 방법이 있을 수 있으나 개인적으로 가장 간단하다고 생각하는 방법에 대해서만 적어본다.

Tomcat에 보면은 context.xml 파일이 있다. 여기에 아래와 같이 간단하게 적어주기만 하면 끝이다.

 

(사실 예쁘게 꾸며놓으려고 했는데, 계속 원하는대로 안나오고 이상하게 나오길래... 그냥 썼다-_-) 

 <Resource name="jdbc/testdb" auth="Container" type="javax.sql.DataSource"
           maxActive="50" maxIdle="30" maxWait="10000"
           username="user" password="password
           driverClassName="com.mysql.jdbc.Driver"
           url="jdbc:mysql://localhost:3306/testdb"/>

 

설정 방법은 MySQL을 기준으로 하였다.

예전 같았다면 Oracle로 했을텐데, 지금은 MySQL을 더 많이 사용하기 때문에 그냥 MySQL로 연결하는 방법을 설명한다.

속성들은 다음과 같다.

 

 maxActive

 Pool에서의 최대 Connection 갯수. -1로 설정하면 무한.

 maxIdle

 Pool에서 최대로 유지하는 유휴 Connection 갯수. -1로 설정하면 무한.

 maxWait

 Connection Timeout 시간. 단위는 ms. -1로 설정하면 무한.

 username

 DB Connection을 위한 username.

 password  DB Connection을 위한 password.
 driverClassName

 Database Driver Class. MySQL은 com.mysql.jdbc.Driver

 url

 JDBC connection url. MySQL의 옵션을 뒤에 붙여서 쓸 수 있다. ex> autoReconnect=true

 

위와 같이 Tomcat의 context.xml을 설정했다면, 이제 남은 것은 어플리케이션 web.xml 파일을 설정하는 것이다.

 

 <description>MySQL</description>
 <resource-ref>
    <description>MySQL DB Connection</description>
    <res-ref-name>jdbc/testdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
 </resource-ref>

 

위와 같이 설정을 해주면은 jdbc/testdb를 사용할 수 있다.

DataSource를 불러올 때는 "jdbc/testdb"만 불러주면 된다.

 

3. 자세한 내용

http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

 

4. 잠깐 알아보는 용어

JNDI : Java Naming and Directory Interface

자세한 것은 좀 더 알아본 후에-_- 사실 읽어봐도 와닿지 않기 때문에;

 

ps> 잘못된 내용이 있을 경우는 말씀해주시면 감사드리겠습니다.

Comments