Java数据库连接池.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java数据库连接池.doc》由会员分享,可在线阅读,更多相关《Java数据库连接池.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-作者xxxx-日期xxxxJava数据库连接池【精品文档】 Java数据库连接池1.配置tomcat下的conf下的context.xml文件,在之间添加连接池配置: DB Connection jdbc/oracle javax.sql.DataSource Container1.配置tomcat下的conf下的server.xml中的host标签中添加连接池配置: 1. 2.配置你的应用下的web.xml中的web-app标签之间加入:1. 2. DB Connection3. jdbc/sql4. javax.sql.DataSource5. Container6. 3.把连接数据库的
2、第三方驱动放到common/lib下面就ok了 4.测试程序我就不写了 虽然现在用APACHE COMMONS DBCP可以非常方便的建立数据库连接池,但是像这篇文章把数据库连接池的内部原理写的这么透彻,注视这么完整,真是非常难得,让开发人员可以更深层次的理解数据库连接池,真是非常感谢这篇文章的作者。import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.Driver;import java.sql.DriverManager;import java.sql.SQLException;import
3、java.sql.Statement;import java.util.Enumeration;import java.util.Vector;public class ConnectionPool private String jdbcDriver = ; / 数据库驱动private String dbUrl = ; / 数据 URLprivate String dbUsername = ; / 数据库用户名private String dbPassword = ; / 数据库用户密码private String testTable = ; / 测试连接是否可用的测试表名,默认没有测试表p
4、rivate int initialConnections = 10; / 连接池的初始大小private int incrementalConnections = 5;/ 连接池自动增加的大小private int maxConnections = 50; / 连接池最大的大小private Vector connections = null; / 存放连接池中数据库连接的向量 , 初始时为 null/ 它中存放的对象为 PooledConnection 型/* 构造函数* param jdbcDriver String JDBC 驱动类串* param dbUrl String 数据库 U
5、RL* param dbUsername String 连接数据库用户名* param dbPassword String 连接数据库用户的密码*/public ConnectionPool(String jdbcDriver,String dbUrl,String dbUsername,String dbPassword) this.jdbcDriver = jdbcDriver; this.dbUrl = dbUrl; this.dbUsername = dbUsername; this.dbPassword = dbPassword;/* 返回连接池的初始大小* return 初始连接池
6、中可获得的连接数量*/public int getInitialConnections() return this.initialConnections;/* 设置连接池的初始大小* param 用于设置初始连接池中连接的数量*/public void setInitialConnections(int initialConnections) this.initialConnections = initialConnections;/* 返回连接池自动增加的大小 、* return 连接池自动增加的大小*/public int getIncrementalConnections() retur
7、n this.incrementalConnections;/* 设置连接池自动增加的大小* param 连接池自动增加的大小*/public void setIncrementalConnections(int incrementalConnections) this.incrementalConnections = incrementalConnections;/* 返回连接池中最大的可用连接数量* return 连接池中最大的可用连接数量*/public int getMaxConnections() return this.maxConnections;/* 设置连接池中最大可用的连接
8、数量* param 设置连接池中最大可用的连接数量值*/public void setMaxConnections(int maxConnections) this.maxConnections = maxConnections;/* 获取测试数据库表的名字* return 测试数据库表的名字*/public String getTestTable() return this.testTable;/* 设置测试表的名字* param testTable String 测试表的名字*/public void setTestTable(String testTable) this.testTabl
9、e = testTable;/* 创建一个数据库连接池,连接池中的可用连接的数量采用类成员* initialConnections 中设置的值*/public synchronized void createPool() throws Exception / 确保连接池没有创建 / 如果连接池己经创建了,保存连接的向量 connections 不会为空 if (connections != null) return; / 如果己经创建,则返回 / 实例化 JDBC Driver 中指定的驱动类实例 Driver driver = (Driver) (Class.forName(this.jdb
10、cDriver).newInstance(); DriverManager.registerDriver(driver); / 注册 JDBC 驱动程序 / 创建保存连接的向量 , 初始时有 0 个元素 connections = new Vector(); / 根据 initialConnections 中设置的值,创建连接。 createConnections(this.initialConnections); System.out.println( 数据库连接池创建成功! );/* 创建由 numConnections 指定数目的数据库连接 , 并把这些连接* 放入 connection
11、s 向量中* param numConnections 要创建的数据库连接的数目*/SuppressWarnings(unchecked)private void createConnections(int numConnections) throws SQLException / 循环创建指定数目的数据库连接 for (int x = 0; x 0 & this.connections.size() = this.maxConnections) break; /add a new PooledConnection object to connections vector / 增加一个连接到连
12、接池中(向量 connections 中) try connections.addElement(new PooledConnection(newConnection(); catch(SQLException e) System.out.println( 创建数据库连接失败! +e.getMessage(); throw new SQLException(); System.out.println( 数据库连接己创建 .); /* 创建一个新的数据库连接并返回它* return 返回一个新创建的数据库连接*/private Connection newConnection() throws
13、SQLException / 创建一个数据库连接 Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword); / 如果这是第一次创建数据库连接,即检查数据库,获得此数据库允许支持的 / 最大客户连接数目 /connections.size()=0 表示目前没有连接己被创建 if (connections.size() = 0) DatabaseMetaData metaData = conn.getMetaData(); int driverMaxConnections = metaData.get
14、MaxConnections(); / 数据库返回的 driverMaxConnections 若为 0 ,表示此数据库没有最大 / 连接限制,或数据库的最大连接限制不知道 /driverMaxConnections 为返回的一个整数,表示此数据库允许客户连接的数目 / 如果连接池中设置的最大连接数量大于数据库允许的连接数目 , 则置连接池的最大 / 连接数目为数据库允许的最大数目 if (driverMaxConnections 0 & this.maxConnections driverMaxConnections) this.maxConnections = driverMaxConne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 数据库连接
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内