- maxActive : 커넥션 풀이 제공할 최대 커넥션 갯수
- whenExhaustedAction : 커넥션 풀에서 가져올 수 있는 커넥션이 없을 때 어떻게 동작할지를 지정.
0일 경우 에러 발생.
1일 경우 maxWait 속성에서 지정한 시간만큼 커넥션을 구할때까지 기다림.
2일 경우 일시적으로 커넥션을 생성해서 사용
- maxWait : whenExhaustedAction 속성의 값이 1일 때 사용되는 대기 시간.
단위는 1/1000초, 0보다 작을 경우 무한히 대기
- maxIdle : 사용되지 않고 풀에 저장될 수 있는 최대 커넥션 갯수.
음수일 경우 제한이 없음
- minIdle : 사용되지 않고 풀에 저장될 수 있는 최소 커넥션 갯수.
- testOnBorrow : true일 경우 커넥션 풀에서 커넥션을 가져올 때 커넥션이 유효한지의 여부를 검사
- testOnReturn : true일 경우 커넥션 풀에 커넥션을 반환할 때 커넥션이 유효한지의 여부를 검사
- timeBetweenEvctionRunsMillis : 사용되지 않는 커넥션을 추출하는 쓰레드의 실행 주기 지정.
양수가 아닐 경우 실행되지 않는다.
시간 단위는 1/1000초.
- testWhileIdle : true일 경우 비활성화 커넥션을 추출할 때 커넥션이 유효한지의 여부를 검사해서 유효하지 않은 커넥션은 풀에서 제거.
커넥션 풀 API 참조 : http://commons.apache.org/proper/commons-dbcp/apidocs/index.html
[ Java 예제 ]
package com.dataSource.dbcp;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
public class DataSource {
private static DataSource datasource;
private BasicDataSource ds;
private BasicDataSource ds;
private DataSource() throws IOException, SQLException, PropertyVetoException {
ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUsername("root");
ds.setPassword("root");
ds.setUrl("jdbc:mysql://localhost/test");
// the settings below are optional -- dbcp can work with defaults
ds.setMinIdle(5);
ds.setMaxIdle(20);
ds.setMaxOpenPreparedStatements(180);
}
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUsername("root");
ds.setPassword("root");
ds.setUrl("jdbc:mysql://localhost/test");
// the settings below are optional -- dbcp can work with defaults
ds.setMinIdle(5);
ds.setMaxIdle(20);
ds.setMaxOpenPreparedStatements(180);
}
public static DataSource getInstance() throws IOException, SQLException, PropertyVetoException {
if (datasource == null) {
datasource = new DataSource();
return datasource;
} else {
return datasource;
}
datasource = new DataSource();
return datasource;
} else {
return datasource;
}
}
public Connection getConnection() throws SQLException {
return this.ds.getConnection();
}
return this.ds.getConnection();
}
댓글 없음:
댓글 쓰기