Tomcat 5.5를 기준으로된 문서에 자세히 나와있음.

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

요점을 말하면 설정해야 할 파일은 2가지 정도 되고 대상으로 conf/server.xml과 WEB-INF/web.xml 을 수정하거나 server.xml 대신 META-INF/context.xml 을 수정하여도 됨.

필요한 Component는 $CATALINA_HOME/common/lib/naming-factory-dbcp.jar에 있으니 별도로 설치를 하지 않아도 되지만 JDBC 드라이버는 별도로 준비하여야 하며 $CATALINA_HOME/common/lib에 추가해야 드라이버를 찾을 수 있다. WEB-INF/lib에 넣어놓고 안된다고 하면 안됨.(경험해 봄)

 

설정해야 할 Context 내용 (server.xml or META-INF/context.xml)

  1. <Context>
  2. <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  3. maxActive="100" maxIdle="30" maxWait="10000"
  4. username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
  5. url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
  6. </Context>

resourecename, username, password, databasename 을 수정하여 사용하면되고, &amp;useUnicode=true&amp;characterEncoding=UTF-8 은 옵션 사항

 

web.xml 설정 내용

  1. <resource-ref>
  2. <description>DB Connection</description>
  3. <res-ref-name>jdbc/TestDB</res-ref-name>
  4. <res-type>javax.sql.DataSource</res-type>
  5. <res-auth>Container</res-auth>
  6. </resource-ref>

을 적당한 곳에 추가.

 

사용법은

  1. Context initContext = new InitialContext();
  2. Context envContext = (Context)initContext.lookup("java:/comp/env");
  3. DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB);
  4. Connection conn = ds.getConnection();

 

주의할 사항 중에 하나로 Connecton이 자기 맘대로 close 되는 경우가 있다고 한다.

  1. conn.close();
  2. conn = null;

로 명시적으로 사용할 수 없도록 하면 해결. 원인은 conn.close()를 하더라도 다른 쓰레드에서 사용할 수 있으며 이를 다시 close하는 경우 발생함.