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));
 }
}


Related articles: