- 浏览: 20538 次
- 性别:
- 来自: 深圳
文章分类
package com.siven.connpool;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Vector;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class ConnectionPool {
public static ConnectionPool connectionPool = null;
public int clients = 10;
public Vector<Connection> freeConnections = new Vector<Connection>();
public Driver driver;
public int max = 20;
private ConnectionPool() throws SAXException, IOException, ParserConfigurationException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
init();
}
public static ConnectionPool getInstance() throws SAXException, IOException, ParserConfigurationException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
if(connectionPool==null){
connectionPool = new ConnectionPool();
}
return connectionPool;
}
public void init() throws SAXException, IOException, ParserConfigurationException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
driver = (Driver) Class.forName(getConfig("driver")).newInstance();
max=Integer.valueOf(getConfig("max")).intValue();
Class.forName(getConfig("driver"));
String connections = getConfig("connections");
String username=getConfig("username");
String password=getConfig("password");
for(int i=0;i<clients;i++){
Connection conn = DriverManager.getConnection(connections,username,password);
freeConnections.add(conn);
}
}
public Connection getConnection() throws ClassNotFoundException, SQLException, SAXException, IOException, ParserConfigurationException{
Connection conn = null;
if(freeConnections.size()>0){
conn = (Connection)freeConnections.firstElement();
freeConnections.removeElementAt(0);
}else{
if(clients<max){
conn = newConnection();
}
}
return conn;
}
public void freeConnection(Connection conn) throws SQLException{
freeConnections.add(conn);
release();
}
public void release() throws SQLException{
Enumeration<Connection> allConnections = freeConnections.elements();
while(allConnections.hasMoreElements()){
Connection con = (Connection) allConnections.nextElement();
con.close();
}
if(freeConnections.size()>10){
for(int i=10;i<freeConnections.size();i++){
Connection con = freeConnections.remove(i);
con = null;
}
}
DriverManager.deregisterDriver(driver);
}
public Connection newConnection() throws ClassNotFoundException, SQLException, SAXException, IOException, ParserConfigurationException{
Class.forName(getConfig("driver"));
Connection conn = DriverManager.getConnection(getConfig("connections"),getConfig("username"),getConfig("password"));
clients++;
return conn;
}
public String getConfig(String attribute) throws SAXException, IOException, ParserConfigurationException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("config.xml");
NodeList nl = doc.getElementsByTagName("config");
Element e=(Element)nl.item(0);
return e.getAttribute(attribute);
}
public Vector<Connection> getFreeConnections() {
return freeConnections;
}
public void setFreeConnections(Vector<Connection> freeConnections) {
this.freeConnections = freeConnections;
}
}
import java.io.IOException;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Vector;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class ConnectionPool {
public static ConnectionPool connectionPool = null;
public int clients = 10;
public Vector<Connection> freeConnections = new Vector<Connection>();
public Driver driver;
public int max = 20;
private ConnectionPool() throws SAXException, IOException, ParserConfigurationException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
init();
}
public static ConnectionPool getInstance() throws SAXException, IOException, ParserConfigurationException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
if(connectionPool==null){
connectionPool = new ConnectionPool();
}
return connectionPool;
}
public void init() throws SAXException, IOException, ParserConfigurationException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
driver = (Driver) Class.forName(getConfig("driver")).newInstance();
max=Integer.valueOf(getConfig("max")).intValue();
Class.forName(getConfig("driver"));
String connections = getConfig("connections");
String username=getConfig("username");
String password=getConfig("password");
for(int i=0;i<clients;i++){
Connection conn = DriverManager.getConnection(connections,username,password);
freeConnections.add(conn);
}
}
public Connection getConnection() throws ClassNotFoundException, SQLException, SAXException, IOException, ParserConfigurationException{
Connection conn = null;
if(freeConnections.size()>0){
conn = (Connection)freeConnections.firstElement();
freeConnections.removeElementAt(0);
}else{
if(clients<max){
conn = newConnection();
}
}
return conn;
}
public void freeConnection(Connection conn) throws SQLException{
freeConnections.add(conn);
release();
}
public void release() throws SQLException{
Enumeration<Connection> allConnections = freeConnections.elements();
while(allConnections.hasMoreElements()){
Connection con = (Connection) allConnections.nextElement();
con.close();
}
if(freeConnections.size()>10){
for(int i=10;i<freeConnections.size();i++){
Connection con = freeConnections.remove(i);
con = null;
}
}
DriverManager.deregisterDriver(driver);
}
public Connection newConnection() throws ClassNotFoundException, SQLException, SAXException, IOException, ParserConfigurationException{
Class.forName(getConfig("driver"));
Connection conn = DriverManager.getConnection(getConfig("connections"),getConfig("username"),getConfig("password"));
clients++;
return conn;
}
public String getConfig(String attribute) throws SAXException, IOException, ParserConfigurationException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("config.xml");
NodeList nl = doc.getElementsByTagName("config");
Element e=(Element)nl.item(0);
return e.getAttribute(attribute);
}
public Vector<Connection> getFreeConnections() {
return freeConnections;
}
public void setFreeConnections(Vector<Connection> freeConnections) {
this.freeConnections = freeConnections;
}
}
发表评论
-
aaaa
2014-12-01 12:23 0aaaaaaa -
aaaaaaaaaa
2014-12-01 12:09 0sfasd -
6-Struts2 & Spring
2013-01-27 17:49 06-mythingbbbbbbbbbbb -
5-Struts2 & Spring
2013-01-27 17:03 0ssssssssssssssssssss -
4-Struts2 & Spring
2013-01-27 17:03 0asdfasdfa -
3-Struts2 & Spring
2013-01-27 16:37 0szzzzzzzzzzzzzzz -
2-Struts2 & Spring
2013-01-27 16:21 0aaaaaaaaaaaaaaaa -
1-Struts2 & Spring
2013-01-27 16:03 01-mythings1-mythings1-mythings1 ... -
0-Struts2 & Spring
2013-01-27 15:42 0aaaaaaaa -
log4j
2012-11-05 14:43 0log4jlog4jlog4jlog4j -
Java中的IO整理完整版
2013-07-24 20:54 735http://www.blogjava.net/zhuyini ... -
java链接池实现测试类
2011-07-08 11:36 767package com.siven.connpool.test ... -
eclipse 远程调试
2011-06-29 16:34 782tomcat6以上版本,可以直接这样启动: $TOMC ... -
java操作属性文件
2009-11-12 15:46 0/* 操作属性文件,可以为我们的程序带来更方便的移植性,下面是 ... -
JAVA 解压ZIP
2013-07-24 20:27 648/* 提供zip文件的解压缩接口: AdapterZipF ...
相关推荐
NULL 博文链接:https://j2ee2009.iteye.com/blog/734794
偶实现的连接池,各位看看
NULL 博文链接:https://516100981.iteye.com/blog/2314314
资源名称:Java连接池的实现资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
个人实现Java连接池源码 Java 连接池源码 仅供参考
JAVA 完整的数据库连接池实现 可以配置根据自己需要
java 实现连接池 . 希望高手指点迷津.
Java类实现数据库连接池,使用到了线程
RabbitMQ客户连接池的Java实现。我们刚开始也是采用这种方式来实现的,但做压力测试时,发现这种每次新建Connection和新建Channel是非常耗时的,在大并发下,一般都要8毫秒左右,慢的话,好多都是几十毫秒。因此我们...
java实现连接池 没有容器,存java面向对象设计的一个连接池的例子 面试中经常问道的哦
java实现连接池的代码,从底层连接连接池的实现1
JAVA 使用数据库连接池连接Oracle数据库,全代码,附加详细说明
基于JAVA语言的一种有效的数据库连接池的实现代码。
java 数据库连接池的实现代码 java 数据库连接池的实现代码 java 数据库连接池的实现代码
java数据库连接池,是一个简单实现数据库连接池的类
这是我写的一个对JDBC连接池的实现,高手见了可不要笑啊!!!! 程序是在linux下用Eclipse下编写的. 用Jude进行建模,数据库使用了mysql. 程序自带了MySql的Connection连接驱动类,你也可以使用别的驱动类和数据库, 在src/...
在网上找了好久没有现成的ftp连接池jar包,自己花了一些时间实现了一个简单的连接池,用了一段时间稳定性还可以。
在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁