DBCP数据连接池

来源:互联网 发布:牛仔男士衬衫 淘宝 编辑:程序博客网 时间:2024/05/22 13:16

 # 配置文件(src目录下建一个dbcp1.properties文件)

   dbcp1.properties

#数据库驱动dbcp1.driverClassName=com.mysql.jdbc.Driver#数据库连接地址及库名dbcp1.url=jdbc\:mysql\://localhost\:3306/friend?useUnicode\=true&characterEncoding\=utf-8#数据库连接用户名dbcp1.username=root#数据库连接用户密码dbcp1.password=123456#初始化连接数量dbcp1.initialSize=10#最小空闲连接数量dbcp1.minIdle=5#最大空闲连接数量dbcp1.maxIdle=20#多久之后进行回收丢失连接,超时等待时间以毫秒为单位dbcp1.maxWaitMillis=1000#是否在自动回收超时连接的时候打印连接的超时错误dbcp1.logAbandoned=true#是否自动回收超时连接dbcp1.removeAbandoned=true#超时时间以秒数为单位#设置超时时间有一个要注意的地方#超时时间=现在的时间-程序中创建Connection的时间#如果maxActive比较大 如超过100 那么removeAbandonedTimeout可以设置长一点比如180 #也就是三分钟无响应的连接进行回收 当然应用的不同设置长度也不同dbcp1.removeAbandonedTimeout=180#最大活动连接数量dbcp1.maxTotal=50

 # 数据库连接池测试工具类 

   DBCPConnect.java

package com.dbcp;import java.io.FileInputStream;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSource;public class DBCPConnect {private static DataSource dataSource;private static Connection con;public static Connection getConnection() {if (dataSource == null) { initDataSource(); }try {con = dataSource.getConnection();//print();} catch (SQLException e) {e.printStackTrace();}return con;}public static void initDataSource() {FileInputStream is = null;Properties p = new Properties();String driverClassName = null;String url = null;String username = null;String password = null;int initialSize = 0;int minIdle = 0;int maxIdle = 0;int maxWait = 0;int maxActive = 0;try {String path = DBCPConnect.class.getClass().getResource("/").getPath();is = new FileInputStream(path + "dbcp1.properties");p.load(is);driverClassName = p.getProperty("dbcp1.driverClassName");url = p.getProperty("dbcp1.url");username = p.getProperty("dbcp1.username");password = p.getProperty("dbcp1.password");initialSize = Integer.parseInt(p.getProperty("dbcp1.initialSize"));minIdle = Integer.parseInt(p.getProperty("dbcp1.minIdle"));maxIdle = Integer.parseInt(p.getProperty("dbcp1.maxIdle"));maxWait = Integer.parseInt(p.getProperty("dbcp1.maxWait"));maxActive = Integer.parseInt(p.getProperty("dbcp1.maxActive"));} catch (NumberFormatException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {is.close();} catch (IOException e) {e.printStackTrace();}}BasicDataSource ds = new BasicDataSource();ds.setUrl(url);ds.setDriverClassName(driverClassName);ds.setUsername(username);ds.setPassword(password);ds.setInitialSize(initialSize); ds.setMaxActive(maxActive);ds.setMinIdle(minIdle);ds.setMaxIdle(maxIdle);ds.setMaxWait(maxWait);ds.setRemoveAbandoned(true);ds.setRemoveAbandonedTimeout(2000);dataSource = ds;}public static void main(String[] args) {Connection con;try {con = DBCPConnect.getConnection();//print();String sql = "select * from message";PreparedStatement pt = con.prepareStatement(sql);ResultSet rs=pt.executeQuery();while(rs.next()){for(int i=1;i<=rs.getMetaData().getColumnCount();i++){System.out.print(rs.getString(i)+"\t");}System.out.println();}} catch (SQLException e) {e.printStackTrace();}}}

 # 截图:


0 0