根目录下:

dbpool.properties

代码:

driverClassName=oracle.jdbc.driver.OracleDriverusername=scottpassword=tigerurl=jdbc:oracle:thin:@192.168.1.20:1521:ora9poolSize=10

ConnectionPool.java

代码:

package webbook.util;import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import java.util.Vector;public class ConnectionPool {private Vector<Connection> pool;private String url;private String username;private String password;private String driverClassName;/*** 连接池的大小,也就是连接池中有多少个数据库连接。*/private int poolSize = 1;private static ConnectionPool instance = null;/*** 私有的构造方法,禁止外部创建本类的对象,要想获得本类的对象,通过<code>getIstance</code>方法。* 使用了设计模式中的单子模式。*/private ConnectionPool() {init();}/*** 连接池初始化方法,读取属性文件的内容 建立连接池中的初始连接*/private void init() {pool = new Vector<Connection>(poolSize);readConfig();addConnection();}/*** 返回连接到连接池中*/public synchronized void release(Connection conn) {pool.add(conn);}/*** 关闭连接池中的所有数据库连接*/public synchronized void closePool() {for (int i = 0; i < pool.size(); i++) {try {((Connection) pool.get(i)).close();} catch (SQLException e) {e.printStackTrace();}pool.remove(i);}}/*** 返回当前连接池的一个对象*/public static ConnectionPool getInstance() {if (instance == null) {instance = new ConnectionPool();}return instance;}/*** 返回连接池中的一个数据库连接*/public synchronized Connection getConnection() { if (pool.size() > 0) {Connection conn = pool.get(0);pool.remove(conn);return conn;} else {return null;}}/*** 在连接池中创建初始设置的的数据库连接*/private void addConnection() {Connection conn = null;for (int i = 0; i < poolSize; i++) {try {Class.forName(driverClassName);conn = java.sql.DriverManager.getConnection(url, username, password);pool.add(conn);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}/*** 读取设置连接池的属性文件*/private void readConfig() {try {String path = System.getProperty("user.dir") + "\\dbpool.properties";FileInputStream is = new FileInputStream(path);Properties props = new Properties();props.load(is);this.driverClassName = props.getProperty("driverClassName");this.username = props.getProperty("username");this.password = props.getProperty("password");this.url = props.getProperty("url");this.poolSize = Integer.parseInt(props.getProperty("poolSize"));} catch (Exception e) {e.printStackTrace();System.err.println("读取属性文件出错. ");        }}
}

ConnectionPoolTest.java

代码:

package webbook.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class ConnectionPoolTest {public static void main(String[] args) throws Exception {String sql = "select id,name,phone from guestbook";long start = System.currentTimeMillis();ConnectionPool pool = null;for (int i = 0; i < 100; i++) {pool = ConnectionPool.getInstance();Connection conn = pool.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {}rs.close();stmt.close();pool.release(conn);}pool.closePool();System.out.println("经过100次的循环调用,使用连接池花费的时间:" + (System.currentTimeMillis() - start) + "ms\n");String hostName = "192.168.1.20";String driverClass = "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@" + hostName + ":1521:ora9";String user = "scott";String password = "tiger";start = System.currentTimeMillis();for (int i = 0; i < 100; i++) {Class.forName(driverClass);Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {}rs.close();stmt.close();conn.close();}System.out.println("经过100次的循环调用,不使用连接池花费的时间:" + (System.currentTimeMillis() - start) + "ms");}
}

Java Web ConnectionPool (连接池技术)相关推荐

  1. java 连接池技术_java数据库连接池技术原理(浅析)

    在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...

  2. 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    网络访问 随着 Oracle, Sybase, SQL Server ,DB2,  Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库,   ...

  3. java web 服务器推送技术--comet4j

    1.背景 首先实现服务器推送技术一直一来是B/S应用开发的一块难题,因为是基于HTTP协议的,HTTP协议为无状态,单向性的协议,即,必须由客户端发起一个请求建立连接,服务器接收请求,把数据返回给客户 ...

  4. Java Web使用数据库连接池

    这里使用的Web服务器是Tomcat服务器 方法一. 1.1  配置context.xml文件 context.xml文件路径: D:\Tomcat 7\conf\context.xml       ...

  5. JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

    一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...

  6. DBCP和C3P0实现连接池技术

    DBCP和C3P0实现连接池技术 本文是基于Windows 10系统环境,学习和使用连接池技术: Windows 10 MyEclipse 10 DCBP C3P0 一.连接池技术的基本概念 (1) ...

  7. Java 中的连接池示例

    在此页面上,您将学习如何JDBC使用 Java 编程语言创建连接池.为了在我们的应用程序中创建连接池,Sun Microsystem 提供了一个接口 DataSource 通过使用接口 DataSou ...

  8. Java通过DBCP连接池方法实现JDBC代码案例

    Java和大数据系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等 ...

  9. c3p0连接池技术和Druid连接池技术比较

    开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍. java程序与数据库数据交互的步骤 1. 首先需要与数据库建立连接, 即完成驱动注册 ...

最新文章

  1. 第十二周项目一-实现复数类中的运算符重载(3)
  2. (一)数据结构与算法简介
  3. ajax之深入解析(2)
  4. 广东鸿图:搭建业务报表,摆脱人工计数,工作效率提升150%
  5. 斗地主AI算法——第十四章の主动出牌(3)
  6. oracle查询列属性,Oracle中查看所有的表,列,属性,…
  7. ap map 脚本_【图片】fgotool辅助脚本:检测各种素材消耗AP最少的前三个地点【命运冠位指定吧】_百度贴吧...
  8. win7文件和文件夹可以重名吗_Win7下如何重命名,替换System32文件夹下的系统文件...
  9. android如何不卡顿,公认不卡的安卓手机 轻松做到3年不卡顿_TOM科技
  10. 抽象类的继承/纯虚函数的实现
  11. i3wm i3status状态栏实时显示网速
  12. 如何从包含代码库的.repo目录恢复出代码
  13. oracle用户登录提示: user test lacks create session privilege logon denied
  14. 6 观察者模式off方法
  15. bcd 初始化库系统卷失败_中级|软考题库每日一练|2.24
  16. 短线王的盯盘宝怎么样_股票盯盘系统app怎么样
  17. Unity3D 获取资源运行时内存和硬盘大小
  18. 性能测试中的二八原则
  19. 程序化广告(5):广告投放
  20. 视频千倍压缩背后的技术原理之环路滤波

热门文章

  1. 基于AWS的云备份容灾解决方案
  2. 浅谈linux线程模型和线程切换
  3. Android下pm命令详解
  4. 《FilthyRichClients》读书笔记(一)-SwingのEDT
  5. 高等微積分(高木貞治) 1.4節 例2
  6. Iphone革了谁的命?
  7. 第三次握手为什么没有序列号_“三次握手,四次挥手”你真的懂吗?
  8. asp.net web开发步骤_如何在Windows上做Python开发?微软出了官方教程
  9. php 调试常用函数,PHP几个常用的去空、分组、调试数组函数
  10. php时间截取日期,php中肿么获取给定时间中的日期部分