基于系统优化的目标,研究总结了一下工作中的用到的Java连接池。
这里都是单独配置。
首先简单说明一下数据库连接池的概念 。数据库连接的获取 在系统中的开销是比较大的。连接池的目的就是系统初始一定数量的连接,有连接池动态的配置管理连接。
极大提高了系统的效率(当然是在配置得当的情况下)。
最早接触数据库连接池 是用的JNDI配置的 刚开始非常的不理解。现在看来 JNDI是比较好的 是在容器启动的时候 就初始化了 。
不管是哪一种连接池的方式。就是两点
1 .添加相关的Jar;
2. 添加配置文件
A.最基础的 common-dbcp
这个应该是应用比较早的数据库连接池。
a.所需要的jar包在 官网可以下载
http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
b.配置文件 xx.properties
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/test
username=root
password=ucic
#<!-- 初始化连掿 10-->
initialSize=10
#朿大连接数釿50
maxActive=50
#<!-- 朿大空闲连掿20 -->
maxIdle=20
#<!-- 朿小空闲连掿 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秿 -->
maxWait=60000
手动加载
package com.global.jdbc;
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;
/**
* @version 1.0
* @author Ucic No 000
*
*/
public final class BaseDataSource {
// 定义数据源对象
private static DataSource dataSource=null;
static{
Properties pro=new Properties();
InputStream in=BaseDataSource.class.getClassLoader()
.getResourceAsStream("com\\global\\jdbc\\xx.properties");
try {
pro.load(in);
dataSource=BasicDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取数据源对象
public static DataSource getDataSource() {
return dataSource;
}
// 获得连接池中的一个连接
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
B . proxool
这个 在一次做项目的时候 用到过
a.导入proxool-0.9.1.jar proxool-cglib.jar
b.添加proxool.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
the proxool configuration can be embedded within your own
application's. Anything outside the "proxool" tag is ignored.
-->
<something-else-entirely>
<proxool>
<alias>maolv</alias>
<!--
<driver-url>jdbc:mysql://localhost:3306/qianmaolv</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="ucic" />
</driver-properties>
-->
<driver-url>jdbc:mysql://118.123.253.130/ucicno002?characterEncoding=UTF-8</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="ucicno002" />
<property name="password" value="d5m6d2" />
</driver-properties>
<maximum-connection-count>100</maximum-connection-count>
<minimum-connection-count>10</minimum-connection-count>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-new-connections>10</maximum-new-connections>
<prototype-count>5</prototype-count>
<test-before-use>true</test-before-use>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>