请同学们先浏览PPT,这是一个任务点哈!完成后有惊喜哟!

1.连接池概述
数据库连接池指定是在应用服务器启动时,预先建立一定数量的数据库连接,然后将它们放置到池中进行统一管理。一旦客户端请求数据连接时,服务器立即给它将分配一个连接,而不需要为它重新创建数据库连接。
数据库连接池的优缺点
优点:而采用连接池技术,将预先建立的连接分配给客户端的请求,一方面缩短了服务器响应时间,另一方面通过池化管理减轻了服务器负担。
缺点:服务器启动时就会创建一定数量的数据库连接,事实上,这些连接都在等待服务器为其分配客户端的请求,当请求数目远远少于连接数目时,就会导致许多空连接,它们消耗了一定的系统资源。
2.连接池的实现原理
服务器在启动时创建连接池,同时建立一定数量的数据库连接。当客户端请求数据库时,服务器立即为其分配连接。当客户端请求数量超出了已经创建的连接数目时,服务器将为其创建新的连接。当请求数目少于连接数时,将关闭不必要的空连接。连接池的实现原理如图所示。

3.Tomcat连接池的实现
(1)配置数据源
在Tomcat安装目录下的conf\server.xml文件中配置,也可以在Web工程下的META-INF\context.xml文件中配置,在context.xml文件中配置数据源的具体代码如下(Tomcat 5.5以上的版本):
<Context >
<Resource name="jdbc/mysql" type="javax.sql.DataSource" auth="Container"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jdbcdemo"
username="root"
password="123456"
maxActive="40"
maxIdle="2"/>
</Context>
(2)获取连接
public class JDBConnection {
private Connection con = null;
private DataSource ds;
public JDBConnection() { //通过构造方法加载数据库驱动
try {
Context ctx = new InitialContext();
ctx = (Context) ctx.lookup("java:comp/env");
ds = (DataSource) ctx.lookup("jdbc/mysql"); //获取JNDI的名称
con = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.Proxool连接池的实现
Proxool是一个Java SQL Driver驱动程序,它提供了对其它类型的驱动程序的连接池封装,可以透明的为现存的JDBC驱动程序增加连接池功能。Proxool同时也是一个开源的连接池,它的性能优异,可实时监控连接池状态。
(1)Proxool连接池类库下载
Proxool连接池类库的下载是“http://proxool.sourceforge.net”,根据页面中的提示可以下载到该连接池的最新类库版本:proxool-0.9.0RC2。下载后的文件是一个“proxool-0.9.0RC2.zip”压缩文件,解压后的文件中的“proxool-0.9.0RC2.jar”拷贝到当前Web工程下的WEB-INF/lib文件夹即可。
(2)配置Proxool连接池
Proxool连接池通过配置文件显式的指定各个配置选项。该配置文件在WEB-INF文件创建名称“proxool.xml”,该文件的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>mysqlpool</alias>
<driver-url>
jdbc:mysql://localhost:3306/jdbcdemo
</driver-url>
<driver-class>
com.mysql.jdbc.Driver
</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="123456" />
</driver-properties>
<maximum-connection-count>100</maximum-connection-count>
<prototype-count>15</prototype-count>
<minimum-connection-count>5</minimum-connection-count>
<maximum-active-time>1000</maximum-active-time>
<house-keeping-sleep-time>30000</house-keeping-sleep-time>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
(3)配置web.xml
<! -- 配置初始化servlet,在web容器加载的时候自动加载配置文件,如果不是web程序,这个部分就需要通过开发接口来初始化了 -->
<servlet>
<servlet-name>proxoolInitialServlet</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
(4)获取连接
在程序中调用时,一般将获取connection的行为封装为一个工厂模式,便于多种情况的切换,以下是其中proxool数据源的getConnection方法的实现:
public Connection getConnection() {
try{
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
return DriverManager.getConnection("proxool.mysqlpool");
}catch(Exception ex){
ex.printStackTrace();
}
return null;
}

