快速业务通道

数据库连接池Java实现小结 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
  if (m_instance == null)   {   synchronized(ConnectionFactory.class){    if (m_instance == null)    {    //new instance    //参数定制    m_instance = new ConnectionFactory();    m_instance.connparam = param;    m_instance.MaxConnectionCount = fparam.getMaxConn();    m_instance.MinConnectionCount = fparam.getMinConn();    m_instance.ManageType = fparam.getType();    m_instance.isflag = true;    //初始化,创建MinConnectionCount个连接    System.out.println("connection factory 创建!");    try{     for (int i=0; i < m_instance.MinConnectionCount; i++)     {     _Connection _conn = _Connection.getConnection(m_instance, m_instance.connparam);     if (_conn == null) continue;     System.out.println("connection创建");     m_instance.FreeConnectionPool.add(_conn);//加入空闲连接池     m_instance.current_conn_count ++;     //标志是否支持事务     m_instance.supportTransaction = _conn.isSupportTransaction();     }    }    catch(Exception e)    {     e.printStackTrace();    }    //根据策略判断是否需要查询    if (m_instance.ManageType != 0)    {     Thread t = new Thread(new FactoryMangeThread(m_instance));     t.start();    }    }   }   } }

数据库连接池Java实现小结(3)

时间:2010-12-14

连接池的管理

对于连接池的管理,我是设想使用静态管理和动态管理两种策略,设置了最大限制,和恒定的连接数。使用了2个池,一个空闲池,一个使用池。静态就是使用的时候发现空闲连接不够再去检查。动态就是使用了一个线程定时检查。

//根据策略判断是否需要查询    if (m_instance.ManageType != 0)    {     Thread t = new Thread(new FactoryMangeThread(m_instance));     t.start();    } //连接池调度线程 public class FactoryMangeThread implements Runnable { ConnectionFactory cf = null; long delay = 1000; public FactoryMangeThread(ConnectionFactory obj) {   cf = obj; } /* (non-Javadoc)   * @see java.lang.Runnable#run()   */ public void run() {   while(true){   try{    Thread.sleep(delay);   }   catch(InterruptedException e){}   System.out.println("eeeee");   //判断是否已经关闭了工厂,那就退出监听   if (cf.isCreate())    cf.schedule();   else    System.exit(1);   } } }

数据库连接池Java实现小结(4)

时间:2010-12-14

最后给出完整的源代码:

_Connectio.java

package scut.ailab.connectionpool; import java.lang.reflect.*; import java.sql.*; /** * @author youyongming * 定义数据库连接的代理类 */ public class _Connection implements InvocationHandler { //定义连接 private Connection conn = null; //定义监控连接创建的语句 private Statement statRef = null; private PreparedStatement prestatRef = null; //是否支持事务标志 private boolean supportTransaction = false; //数据库的忙状态 private boolean isFree = false; //最后一次访问时间 long lastAccessTime = 0; //定义要接管的函数的名字 String CREATESTATE = "createStatement"; String CLOSE = "close"; String PREPARESTATEMENT = "prepareStatement"; String COMMIT = "commit

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号