当前位置:文档之家› 连接池技术

连接池技术

连接池技术
JDBC 访问数据库步骤
开始
导入 java.sql包 加载并注册驱动程序
创建一个 Connection 对象
创建一个 Statemen
关闭ResultSet 对象
使用ResultSet对象
结束
JDBC中的类
使用数据库连接池的优势

资源重用
Tomcat自带连接池的使用
4.在程序中使用已配置的连接池获得 Connetion对象 DataSource ds = null; Connection con = null; Context c = new InitialContext(); ds = (BasicDataSource)c.lookup("java: /comp/env/jdbc/daolu"); con = ds.getConnection();
数据库连接池的基本原理
基本原理:
在内部对象池中维护一定数量的数据库连接, 并对外暴露数据库连接获取和返回方法。如: 外 部使用者可通过getConnection 方法获取连接,使 用完毕后再通过releaseConnection 方法将连接返 回,注意此时连接并没有关闭,而是由连接池管 理器回收,并为下一次使用做好准备。
当客户释放数据库连接时,先判断该连接的引用次数是否 超过了规定值,如果超过就删除该连接,并判断当前连接 池内总的连接数是否小于minConn(最小连接数),若小 于就将连接池充满;如果没超过就将该连接标记为开放状 态,可供再次复用。可以看出正是这套策略保证了数据库 连接的有效复用,避免频繁地建立、释放连接所带来的系 统资源开销。






连接池配置参数含义
username 传递给JDBC驱动的用于建立连接的用户名 password 传递给JDBC驱动的用于建立连接的密码 url 传递给JDBC驱动的用于建立连接的URL driverClassName 使用的JDBC驱动的完整有效的java 类名 initialSize 0 初始化连接:连接池启动时创建的初始化连 接数量,1.2版本后支持 maxActive 8 最大活动连接:连接池在同一时间能够分配的 最大活动连接的数量, 如果设置为非正数则表示不限制 maxIdle 8 最大空闲连接:连接池中容许保持空闲状态的最 大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制 minIdle 0 最小空闲连接:连接池中容许保持空闲状态的最 小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建 maxWait 无限 最大等待时间:当没有可用连接时,连接池等 待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设 置为-1表示无限等待
数据库连接池的基本原理
连接池的管理

当客户请求数据库连接时,首先查看连接池中是否有空闲 连接(指当前没有分配出去的连接)。如果存在空闲连接, 则把连接分配给客户并作相应处理(即标记该连接为正在 使用,引用计数加1)。如果没有空闲连接,则查看当前 所开的连接数是不是已经达到maxConn(最大连接数), 如果没达到就重新创建一个连接给请求的客户;如果达到 就按设定的maxWaitTime(最大等待时间)进行等待,如 果等待maxWaitTime后仍没有空闲连接,就抛出无空闲连 接的异常给用户。
由于数据库连接得到重用,避免了频繁创建、 释放连接引起的大量性能开销。

更快的系统响应速度
数据库连接池在初始化过程中,往往已经创建 了若干数据库连接置于池中备用。此时连接的初 始化工作均已完成。对于业务请求处理而言,直 接利用现有可用连接,避免了数据库连接初始化 和释放过程的时间开销,从而缩减了系统整体响 应时间。

Tomcat自带连接池的配置

<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/daolu" type="javax.sql.DataSource " driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.5.253:1521:tarena" username=“openlab" password=“open23" maxActive="40" maxIdle="2“ minIdle=“1” maxWait="50000" /> </Context>
使用数据库连接池的优势

新的资源分配手段
对于多应用共享同一数据库的系统而言,可在应用层 通过数据库连接的配置,实现数据库连接池技术。某一应 用最大可用数据库连接数的限制,避免某一应用独占所有 数据库资源。

统一的连接管理,避免数据库连接泄漏
在较为完备的数据库连接池实现中,可根据预先的连 接占用超时设定,强制收回被占用连接。从而避免了常规 数据库连接操作中可能出现的资源泄漏 。
相关主题