c3p0 연결 풀링에이 문제가 있습니다. 새 c3p0입니다. c3p0 연결 풀링 전체 이벤트 연결이 닫혔습니다
이 2008R2 내가 사용하는 JDBC 드라이버가 jtds 라이브러리 MSSQL 나의 데스크탑 프로그램 사용 자바이며, 연결 풀링에 대해 나는 프로그램이 몇 시간 동안 실행되는 몇 가지 문제가 C3P0를를 사용하는 프로그램이 붙어있다 풀에서 연결을 기다리고 있기 때문입니다.
연결 풀이 가득 차서 SQL 문을 실행할 수없는 것 같습니다. SQL 문 실행을 끝낼 때마다 이미 연결을 닫습니다.
c3p0과 동일한 문제가있는 사람이 있습니까?
참고 : 저는 ComboPooledDataSource를 사용하며 연결을 원할 때 ComboPooledDataSource, getConnection() 메서드를 사용합니다. ComboPooledDataSource에서이 getConnection() 메서드를 사용하면 유휴 연결이 발생합니까?
유휴 상태로 연결하는 방법은 무엇입니까? 왜냐하면 나는 연결을 할 때마다 이미 연결을 닫았 기 때문입니다.
감사합니다. 1. 플로우 데이터베이스 연결 데이터베이스 트랜잭션 2.for (연결 및 풀링을 얻기 위해) (실행 쿼리 문)
public final class DBConnection {
private static DatabaseProperties dbProp;
private static ComboPooledDataSource ds;
private DBConnection(){}
private static void create(){
DatabaseProperties dp = getDatabaseProperties();
boolean success = true;
do{
try{
ds = new ComboPooledDataSource();
ds.setDriverClass("net.sourceforge.jtds.jdbc.Driver");
ds.setJdbcUrl("jdbc:jtds:sqlserver://"+ dp.getIpaddr()+":"+dp.getPort()+ "/"+dp.getDbname(););
ds.setUser(dp.getUsername());
ds.setPassword(dp.getPassword());
ds.setMinPoolSize(3);
ds.setAcquireIncrement(1);
ds.setMaxPoolSize(20);
} catch (Exception ex) {
LoggerController.log(Level.SEVERE,"Database error on creating connection",ex,LoggerController.DATABASE);
success = false;
}
}while(!success);
}
public static ComboPooledDataSource getDataSource(){
if(ds == null)create();
return ds;
}
public static Connection getConnection(){
Connection con = null;
try {
con = DBConnection.getDataSource().getConnection();
} catch (SQLException ex) {
LoggerController.log(Level.SEVERE,"Database error on getting connection",ex,LoggerController.DATABASE);
}
return con;
}
public static void close(){
ds.close();
}
: 은 일반적으로 난 2 클래스가 : 여기
내가 사용하는 코드입니다
}
public class DBTrans {
private DBTrans(){}
public static DataTable executeQuery(String query) throws SQLException{
DataTable dt = null;
Connection con = null;
try {
con = DBConnection.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
dt = new DataTable(rs);
} catch (SQLException ex) {
throw new SQLException("QUERY= ["+query+"]\n"+ex.getMessage());
}
finally{
if(con!=null){
con.close();
}
}
return dt;
}
public static int executeUpdate(String query) throws SQLException{
int sql = 0;
Connection con = null;
try {
con = DBConnection.getConnection();
Statement stmt = con.createStatement();
sql = stmt.executeUpdate(query);
con.close();
} catch (SQLException ex) {
throw new SQLException("QUERY=["+query+"]\n"+ex.getMessage());
}
finally{
if(con!=null){
con.close();
}
}
return sql;
}
}
예외 추적은 무엇입니까? – Santosh
아니요, 프로그램이 막혔습니다. 연결을 기다리고 있습니다. – Pichanz
프로그램을 디버그/프로파일 한 적이 있습니까? – Alfabravo