Java Web ConnectionPool (连接池技术)
根目录下:
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 (连接池技术)相关推荐
- java 连接池技术_java数据库连接池技术原理(浅析)
在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...
- 走进JavaWeb技术世界3:JDBC的进化与连接池技术
网络访问 随着 Oracle, Sybase, SQL Server ,DB2, Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库, ...
- java web 服务器推送技术--comet4j
1.背景 首先实现服务器推送技术一直一来是B/S应用开发的一块难题,因为是基于HTTP协议的,HTTP协议为无状态,单向性的协议,即,必须由客户端发起一个请求建立连接,服务器接收请求,把数据返回给客户 ...
- Java Web使用数据库连接池
这里使用的Web服务器是Tomcat服务器 方法一. 1.1 配置context.xml文件 context.xml文件路径: D:\Tomcat 7\conf\context.xml ...
- JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生
一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...
- DBCP和C3P0实现连接池技术
DBCP和C3P0实现连接池技术 本文是基于Windows 10系统环境,学习和使用连接池技术: Windows 10 MyEclipse 10 DCBP C3P0 一.连接池技术的基本概念 (1) ...
- Java 中的连接池示例
在此页面上,您将学习如何JDBC使用 Java 编程语言创建连接池.为了在我们的应用程序中创建连接池,Sun Microsystem 提供了一个接口 DataSource 通过使用接口 DataSou ...
- Java通过DBCP连接池方法实现JDBC代码案例
Java和大数据系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等 ...
- c3p0连接池技术和Druid连接池技术比较
开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍. java程序与数据库数据交互的步骤 1. 首先需要与数据库建立连接, 即完成驱动注册 ...
最新文章
- 第十二周项目一-实现复数类中的运算符重载(3)
- (一)数据结构与算法简介
- ajax之深入解析(2)
- 广东鸿图:搭建业务报表,摆脱人工计数,工作效率提升150%
- 斗地主AI算法——第十四章の主动出牌(3)
- oracle查询列属性,Oracle中查看所有的表,列,属性,…
- ap map 脚本_【图片】fgotool辅助脚本:检测各种素材消耗AP最少的前三个地点【命运冠位指定吧】_百度贴吧...
- win7文件和文件夹可以重名吗_Win7下如何重命名,替换System32文件夹下的系统文件...
- android如何不卡顿,公认不卡的安卓手机 轻松做到3年不卡顿_TOM科技
- 抽象类的继承/纯虚函数的实现
- i3wm i3status状态栏实时显示网速
- 如何从包含代码库的.repo目录恢复出代码
- oracle用户登录提示: user test lacks create session privilege logon denied
- 6 观察者模式off方法
- bcd 初始化库系统卷失败_中级|软考题库每日一练|2.24
- 短线王的盯盘宝怎么样_股票盯盘系统app怎么样
- Unity3D 获取资源运行时内存和硬盘大小
- 性能测试中的二八原则
- 程序化广告(5):广告投放
- 视频千倍压缩背后的技术原理之环路滤波
热门文章
- 基于AWS的云备份容灾解决方案
- 浅谈linux线程模型和线程切换
- Android下pm命令详解
- 《FilthyRichClients》读书笔记(一)-SwingのEDT
- 高等微積分(高木貞治) 1.4節 例2
- Iphone革了谁的命?
- 第三次握手为什么没有序列号_“三次握手,四次挥手”你真的懂吗?
- asp.net web开发步骤_如何在Windows上做Python开发?微软出了官方教程
- php 调试常用函数,PHP几个常用的去空、分组、调试数组函数
- php时间截取日期,php中肿么获取给定时间中的日期部分