연우, 장을 열다.


dbcp가 무엇입니까. 


dbcp란 데이터 베이스와 미리 연결된 커넥션을 만들어서 pool에 저장해두었다가 커넥션에게 요청이 있을때, 

pool에서 가져다 쓰고 다시 반환해주는 기법입니다. 


미리 생성해두고 있기때문에 데이터베이스의 부하를 줄이고 , 유동적으로 연결관리가 가능한 아주 유용한 기술입니다. 


학원 선생님께서 알려주신대로 dbcp를 잘 이해했으나, 한가지 셋팅의 부족함때문에 나는 이런 에러를 마주할 수 밖에 없었습니다. 





빨간 줄의 에러 메시지를 보면, 


Cannot create JDBC driver of class '' for connect URL 'null' 로써, 연결할 URL이 없다 라고 뜹니다. 


이 jdbc란 기법을 사용하기 위해선 몇가지 설정이 필요합니다.



JDBC 환경 설정하기 


1.라이브러리 추가

 - 톰캣 6.0 이전 버전  : commons-dbcp.jar, commons-pool.jar, commons-collections.jar

 - 톰캣 6.0 이후 버전  : tomcat-dbcp.jar


이 jar 파일을 찾아서 webContent - Web-INF - lib  내부에 넣어줍니다. 




2.Servers - tomcat - context.xml 파일 설정




위 파일을 열면,


<context></context> 태그 내부에 아래와 같은 설정이 필요합니다. 


<Resource name="jdbc/basicjsp(데이타베이스이름 , JNDI로 호출될 이름을 설정)

auth="Container(Container 거나 Application이거나 - DBCP를 관리할 관리자)

type="javax.sql.DataSource(해당 resource의 return type)"

  factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory(dbcp를 유용하는 관리 클래스)"

  driverClassName="com.mysql.jdbc.Driver(dbcp를 이용하기 위한 드라이버클래스)"

  url="jdbc:mysql://localhost:3306/basicjsp(DB의 접속 유알엘)"

  username="test(db 접속 아이디)" password="test(db 접속 비번)

  maxActive="100" maxIdle="30" maxWait="10000"

  removeAbandoned="true" removeAbandonedTimeout="60"/> 


3.WEB-INF - web.xml 설정


dbcp를 사용하기위해 드라이버를 만졌으니, 이용하는 주체인 웹컨텐트에도 설정을 해줘야 합니다. 


<resource-ref>

<description>My SQL Resource</description><!-- 리소스 설명 -->

<res-ref-name>jdbc/basicjsp</res-ref-name><!-- 리소스 이름(JNDI명) -->

<res-type>javax.sql.DataSource</res-type><!-- 리턴 Type -->

<res-auth>Container</res-auth><!-- 관리 계층 -->

</resource-ref>




위 3가지 절차를 밟아서 dbcp를 사용할 준비를 모두 마쳤습니다. 


이제 코딩을 분석하면 됩니다.




요약정리 


첫째 DBCP를 사용하려면,  톰캣 서버에 맞는 jar파일을 넣습니다. 

둘째 톰캣서버에게 DBCP에 걸맞는 설정을 .<context></context> 내부에 넣어줍니다.

셋재 사용의 주체가 되는 프로젝트에게도 web.xml에 두번째 작업에서 설정한 값을 바라볼 수 있도록 함께 설정해줍니다.



자 이제 그럼 모두 DBCP 풀에 빠져봅시다!