Java configuration DBCP connection pool of database connection pool sample share
- 2020-04-01 02:37:42
- OfStack
Use jar packages: Commons -dbcp-1.4.jar, Commons -pool-1.6.jar, Commons -logging-1.1.3.jar, in addition to the database JDBC driver, java6 and above platform
Connection pool management class
package cn.songxinqiang.samples.commonsdbcp.util;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;
public class DBManager {
private static final Log log = LogFactory.getLog(DBManager.class);
private static final String configFile = "dbcp.properties";
private static DataSource dataSource;
static {
Properties dbProperties = new Properties();
try {
dbProperties.load(DBManager.class.getClassLoader()
.getResourceAsStream(configFile));
dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
Connection conn = getConn();
DatabaseMetaData mdm = conn.getMetaData();
log.info("Connected to " + mdm.getDatabaseProductName() + " "
+ mdm.getDatabaseProductVersion());
if (conn != null) {
conn.close();
}
} catch (Exception e) {
log.error(" Failed to initialize connection pool: " + e);
}
}
private DBManager() {
}
public static final Connection getConn() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
log.error(" Failed to get database connection: " + e);
}
return conn;
}
public static void closeConn(Connection conn) {
try {
if (conn != null && !conn.isClosed()) {
conn.setAutoCommit(true);
conn.close();
}
} catch (SQLException e) {
log.error(" Failed to close database connection: " + e);
}
}
}
Connection profile
# Database driven
driverClassName=com.mysql.jdbc.Driver
# Database connection address
url=jdbc:mysql://localhost/ctg
# The user name
username=root
# password
password=123456
# The maximum number of database connections in the connection pool. Set to 0 Expression limit
maxActive=30
# Maximum idle number, maximum idle time for a database connection. Over idle time, database connection
# The connection will be marked as unavailable and then released. Set to 0 Expression limit
maxIdle=10
# Maximum connection setup wait time. If this time is exceeded, an exception will be received. Set to -1 Expression limit
maxWait=1000
# More than removeAbandonedTimeout After the time, whether to enter The row is recycled without a connection (discard) (default is false , is adjusted for true)
removeAbandoned=true
# Beyond the time limit, recycling is useless ( abandoned ) Connection (default is 300 Second, adjust to 180 )
removeAbandonedTimeout=180
Test connection pool productivity and demonstrate how to get and close connections
public class ConnectionSource {
public static void main(String[] args){
long begin=System.currentTimeMillis();
for(int i=0;i<10000;i++){
Connection conn=DBManager.getConn();
System.out.print(i+" ");
DBManager.closeConn(conn);
}
long end=System.currentTimeMillis();
System.out.println(" Available: "+(end-begin));
}
}