[Spring] dbcp와 c3p0 커넥션 풀 유지하기
JDBC 커넥션 풀을 지원하는 대표적인 오픈소스 중에 아파치 DBCP와 C3P0가 있다. 이들은 Spring, Hibernate 등과 통합되어 DB 커넥션 풀을 제공하는 DataSource를 구성하여 자주 쓰인다.
오라클이나 MySQL 등 DBMS들은 기본적으로 특정 시간동안 실행이 없으면 해당 세션을 종료하게 된다. 이렇게 종료된 커넥션은 어플리케이션에서 오류를 발생시키게 되므로 커넥션을 유지하기 위한 별도 설정을 필요로 하게 된다. 커넥션을 얻어올 때 커넥션 테스트를 수행하고 실패하면 새로운 커넥션을 생성할 수 있다. 또한 idle 타임에 주기적으로 커넥션 테스트를 수행할 수도 있다.
아래는 dbcp를 이용하여 구성한 스프링 DataSource 설정의 예이다.
|
아래는 c3p0를 이용하여 구성한 스프링 DataSource 설정의 예이다.
|
참조:
- DBCP Configuration: http://commons.apache.org/dbcp/configuration.html
- C3P0 Configuraion: http://www.mchange.com/projects/c3p0/index.html
출처 : http://www.java2go.net/blog/117
'개발 > Java' 카테고리의 다른 글
[Java] File 클래스 속성 및 사용법 (0) | 2009.11.29 |
---|---|
[Java] 파일에 텍스트 이어서 쓰기 (0) | 2009.11.25 |
[java] 저장소 정보 확인 (0) | 2009.11.24 |
자주 쓰는 Maven 설정 정리 (0) | 2009.11.16 |
[ibatis]동적 컬럼 생성시 컬럼정보를 제대로 가져오지 못하는 현상 (1) | 2009.11.12 |
[tomcat] DataSource 설정
각각 Tomcat 버전마다 차이가 있다
tomcat 5.5 버전
예제.1
context.xml에 해당 부분을 추가해준다.
<Resource name="jdbc/public" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="10" maxWait="-1"
username="myid" password="mypassword" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORA920"/>
[mysql]
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/mySplDB" username="test" password="test1" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/dbname?autoReconnect=true&useUnicode=true&characterEncoding=euckr" />
예제.2
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/tmjtest"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
url="jdbc:mysql://localhost:3306/tmjtest"
username="root"
password=""
maxActive="20"
maxIdle="10"
maxWait="-1" />
</GlobalNamingResources>
<!-- Context 만들때.. -->
<Context path="/tmj" docBase="c:\tmj" debug="0" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="tmjtest_log." suffix=".txt" timestamp="true"/>
<ResourceLink name="jdbc/tmjtest" global="jdbc/tmjtest" type="javax.sql.DataSource"/>
</Context>
[mysql]
<ResourceParams name="jdbc/ucmsDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/dbname?autoReconnect=true&useUnicode=true&characterEncoding=euckr</value>
</parameter>
<parameter>
<name>username</name>
<value>aaa</value>
</parameter>
<parameter>
<name>password</name>
<value>bbb</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
</ResourceParams>
'개발 > Server' 카테고리의 다른 글
Apache 2.2 + Tomcat 6 + mod_jk를 이용한 연동 ② - windows (0) | 2009.11.11 |
---|---|
[tomcat] 웹사이트 특정 IP만 접속 가능 하게하기 (0) | 2009.02.17 |
mod_jk를 이용해서 Apache, Tomcat 연동 - Windows (3) | 2008.12.27 |
Tomcat Context 추가 (0) | 2008.12.26 |
proxy모듈을 통한 Apache, Tomcat 연동 - Windows (0) | 2008.12.26 |