知识大全 好的连接池,免费的

Posted 数据库

篇首语:一箫一剑平生意,负尽狂名十五年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 好的连接池,免费的相关的知识,希望对你有一定的参考价值。

  /*   * Copyright (C) Jackliu   * <a href="mailto: "></a>     * WWW CN JAVA All Rights Reserved   */   package java database;   

  import java util *;    import java sql *;

  

  /**    * <font size= ><b>数据库连接池</b></font>    * <font color=gray>这个类为系统提供一个数据库的连接池</font>    * <br><br>    * @see Sys_config    * @author <a href="mailto: ">Jackliu</a>       */    public class DBPoolsManager    static private DBPoolsManager instance; // 唯一实例    DBPools pools;    Driver theDrv;       /**    * 构造方法    * <br>创建数据库连接池(oracle OCI)    */    private DBPoolsManager()    /* use oracle OCI */    String url = "jdbc:oracle:oci :@"+Sys_config getDATABASE_INSTANCE();       String user = Sys_config getDATABASE_USERID();    String password = Sys_config getDATABASE_USERPWD();    int max = Integer parseInt(Sys_config getDATA_SESSION());    try    /*use mysql driver    theDrv = new gjt mm mysql Driver();*/

  

  /*use oracle driver*/    theDrv = new oracle jdbc driver OracleDriver();    DriverManager registerDriver(theDrv);       catch ( SQLException e )    //debug to err log    e printStackTrace(System err);       pools = new DBPools(url user password max);    pools showDetail();   

  

  /**    * 得到一个数据库的连接池管理的实例    * @return 返回一个数据库连接池管理的一个实例    */    static synchronized public DBPoolsManager getInstance()    if (instance == null)    instance = new DBPoolsManager();       return instance;   

  

  /**    * 从数据库连接池中获取一个空闲的数据库连接实例    * <br>如果超出连接池的最大连接 返回一个空的对象    * @return 返回一个数据库连接对象    */    public Connection getConnection()    return pools getConnection();   

  

  /**    * 释放一个正在工作的数据库连接到数据库连接池    * @param con Connection 一个数据库连接    */    public void freeConnection(Connection con)    pools freeConnection(con);          /**    * 关闭数据库连接池    */    public void close()    try    pools showDetail();    pools close();    DriverManager deregisterDriver(theDrv);       catch ( SQLException e )    //debug to err log    e printStackTrace(System err);      

  

  class DBPools    private Vector freeConnections = new Vector();    private Vector currentConnections = new Vector();    private int maxConn;    private String URL;    private String password;    private String user;

  

  /**    * 构造函数    * <br>创建一个数据库连接池    * @param URL String JDBC URL    * @param user String User id || null    * @param password String User pwd ||null    * @param maxConn int Max connect    */    public DBPools(String URL String user String password int maxConn)    this URL = URL;    this user = user;    this password = password;    this maxConn = maxConn;   

  

  /**    * 释放一个正在工作的数据库连接到数据库连接池    * @param con Connection 一个数据库连接    */    public synchronized void freeConnection(Connection con)    //remove from freeConnection vector    currentConnections remove(con);    freeConnections add(con);   

  

  /**    * 从连接池获得一个可用连接 如没有空闲的连接且当前连接数小于最大连接    * 数限制 则创建新连接 如原来登记为可用的连接不再有效 则从向量删除之    * 然后递归调用自己以尝试新的可用连接    * @return 返回一个数据库连接对象    */    public synchronized Connection getConnection()    Connection con = null;    if (freeConnections size() > )    // 获取向量中第一个可用连接    con = (Connection) freeConnections firstElement();    freeConnections removeElementAt( );    try    if (con isClosed())    //递归调用自己 尝试再次获取可用连接    con = getConnection();       currentConnections add(con);       catch (SQLException e)    //递归调用自己 尝试再次获取可用连接    con = getConnection();          else if (maxConn == || currentConnections size() < maxConn)    con = newConnection();       return con;       /**    * 关闭数据库连接池    */    public void close()    for ( int i= ; i<freeConnections size(); i++ )    try    ((Connection)freeConnections get(i)) close();       catch( SQLException e )    //debug to err log    e printStackTrace(System err);          for ( int i= ; i<currentConnections size(); i++ )    try    ((Connection)currentConnections get(i)) close();       catch( SQLException e )    //debug to err log    e printStackTrace(System err);         

  

  /**    * 创建新的连接    */    private synchronized Connection newConnection()    OADS_log toFileLn("DBPool create new!!!");    //showDetail();    Connection con = null;    try    if (user == null)    con = DriverManager getConnection(URL);       else    con = DriverManager getConnection(URL user password);       currentConnections add(con);    catch (SQLException e)    return null;       return con;       /**    * 显示数据库连接池的状态信息    */    public void showDetail()    OADS_log toFileLn("current DB connections : " + currentConnections size());       OADS_log toFileLn("free DB connections : " + freeConnections size());         

     cha138/Article/program/Java/JSP/201311/19689

相关参考

知识大全 spring连接池配置详解

  数据库连接池概述  数据库连接是一种关键的有限的昂贵的资源这一点在多用户的网页应用程序中体现得尤为突出对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性影响到程序的性能指标数据库连接池正是

知识大全 Proxool连接池相关介绍

Proxool连接池相关介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Proxool连接池

知识大全 监控Proxool连接池的活动连接变化情况

监控Proxool连接池的活动连接变化情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  研究了

知识大全 有没有可以免费发广告,效果比较好的平台或者软件

有没有可以免费发广告,效果比较好的平台或者软件?最好能有用户能转发广告信息的。可以下载任务桥,免费发广告,符合你的要求。可以花钱让用户分享,1毛钱用户分享一次,钱给用户,非常好用,各大手机商店都可以下

知识大全 c3po数据库连接池中取出连接

   <!使用连接池获得连接JNDI javanamedriinterfacejava命名目录接口>    

知识大全 spring中连接池的配置

  在默认通过myeclipse生成的配置里spring使用的是apache的dbcp连接池  <beanid=dataSource  class=monsdbcpBasicDataSource

知识大全 数据库连接池java实现小结

  因为工作需要要使用到连接池所以拜读了互联网上众多前辈的文章学了不少经验这里想做一个小结加上自己的想法和在一起希望能给大家一些帮助    目的  消除数据库频繁连接带来的开销和瓶颈  解决方案  不

知识大全 使用连接池的意义

  我从来都这样说:不是所有的应用都要采用连结池一般的轻载用了连结池反而会降低效率要用什么方式连结完全看你的系统瓶颈>  一个普通的连结过程中因为Connection一般要用到本地方法这些初始化是非常

知识大全 连接池用法

  JDBC  JavaServlet作为首选的服务器端数据处理技术正在迅速取代CGI脚本Servlet超越CGI的优势之一在于不仅多个请求可以共享公用资源而且还可以在不同用户请求之间保留持续数据本文

知识大全 做网页主要学什么软件,有网上的好的免费教程推荐一个吗

做网页主要学什么软件,有网上的好的免费教程推荐一个吗?软件用Dreamweaver,也就是说网页三剑客就可以了。Dreamweaver在多媒体方面颇有建树的Macromedia公司推出的可视化网页制作