多线程访问数据库问题
NULL 2012-07-25 03:55:48 数据库使用的是MYSQL的DBCP连接池。。
以下我的数据库连接池类:
package com.smu.DB;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
/**
* 数据库连接池类
* */
public final class DbConnection {
public static DataSource DS;
/**
* 获取数据库连接
* */
static {
initDS();
}
public static synchronized Connection getCon(){
Connection con = null;
try {
if(DS == null){
initDS();
con = DS.getConnection();
}
else{
con = DS.getConnection();
}
} catch (SQLException e) {
System.out.print("取得连接出现异常");
e.printStackTrace();
}
return con;
}
/**
* 读取资源文件,设置连接池参数
* */
public static void initDS() {
Properties p = new Properties();
InputStream is = null;
try {
is = DbConnection.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
p.load(is);
is.close();
DS = BasicDataSourceFactory.createDataSource(p);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
}
使用多个线程在调用getCon()的时候会出现
取得连接出现异常org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Data source rejected establishment of connection, message from server: "Too many connections")
是怎么回事呢?本人初学者。。