一个直接用java类实现连接池的代码例子

原创 2007年09月27日 15:23:00

------------------------------config.java--------------------------------

package com.surge.pool;

/**
 * @author n
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;

public class Config
{

    public static Config getInstance()
    {
        return instance;
    }

    private Config()
    {
        Digester digester = new Digester();
        digester.push(this);
        digester.addCallMethod("pl/database/driver", "setDatabaseDriver", 0);
        digester.addCallMethod("pl/database/url", "setDatabaseUrl", 0);
        digester.addCallMethod("pl/database/user", "setDatabaseUser", 0);
        digester.addCallMethod("pl/database/password", "setDatabasePassword", 0);
        InputStream is = null;
        try
        {
            is = getClass().getClassLoader().getResourceAsStream("db_config.xml");
            digester.parse(is);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        catch(SAXException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(is != null)
                    is.close();
            }
            catch(IOException exception) { }
        }
    }

    public String getDatabaseDriver()
    {
        return databaseDriver;
    }

    public void setDatabaseDriver(String databaseDriver)
    {
        this.databaseDriver = databaseDriver;
    }

    public String getDatabasePassword()
    {
        return databasePassword;
    }

    public void setDatabasePassword(String databasePassword)
    {
        this.databasePassword = databasePassword;
    }

    public String getDatabaseUrl()
    {
        return databaseUrl;
    }

    public void setDatabaseUrl(String databaseUrl)
    {
        this.databaseUrl = databaseUrl;
    }

    public String getDatabaseUser()
    {
        return databaseUser;
    }

    public void setDatabaseUser(String databaseUser)
    {
        this.databaseUser = databaseUser;
    }

    private String databaseDriver;
    private String databaseUrl;
    private String databaseUser;
    private String databasePassword;
    private static final Config instance = new Config();

}

--------------- ConnectionManager.java----------------------

package com.surge.pool;


/**
 * @author n
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.*;
import org.apache.commons.pool.impl.GenericObjectPool;

// Referenced classes of package com.terac.board:
//            Config

public class ConnectionManager
{

    public static ConnectionManager getInstance()
    {
        return instance;
    }

    private ConnectionManager()
    {
        try
        {
            ds = setupDataSource();
        }
        catch(Exception e) { }
    }

    public static DataSource setupDataSource()
    {
        try
        {
         String driver=Config.getInstance().getDatabaseDriver();
         System.out.println("driver is:"+driver);
            Class.forName(driver);
        }
        catch(ClassNotFoundException e) { }
        org.apache.commons.pool.ObjectPool connectionPool = new GenericObjectPool();
        org.apache.commons.dbcp.ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(Config.getInstance().getDatabaseUrl(), Config.getInstance().getDatabaseUser(), Config.getInstance().getDatabasePassword());
        PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
        PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
        return dataSource;
    }

    public DataSource getDataSource()
        throws SQLException
    {
        return ds;
    }

    private static final ConnectionManager instance = new ConnectionManager();
    private DataSource ds;

}

------------------db_config.xml-----------------------

<?xml version="1.0" encoding="ISO-8859-1"?>
<pl>
    <database>
       <driver>com.mysql.jdbc.Driver</driver>
       <url>jdbc:mysql://localhost:3306/et?autoReconnect=ture</url>
        <user>et</user>
        <password>e.t.100</password>
    </database>
</pl>

 

-------------------------test1.java-----------------------------

package com.surge.pool;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

public class test1 {

 public test1() {
  super();
  // TODO Auto-generated constructor stub
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  
  try 
  {
   conn = ConnectionManager.getInstance().getDataSource().getConnection();
   stmt = conn.createStatement();
   String sql="select count(*) as total from cs_bill";
   rs=stmt.executeQuery(sql);
   if(rs.next())
    System.out.println("total="+rs.getInt(1));
   stmt.close();
   conn.close();
  }
  catch(SQLException ex){
   System.out.println(ex);
  }
  finally
        {
            if(conn != null)
            { try
                {
                    conn.close();
                }
                catch(SQLException e) { }
            }
            if(stmt != null)
            { try
                {
                    stmt.close();
                }
                catch(SQLException e) { }
            }
            if(rs != null)
            { try
                {
                    rs.close();
                }
                catch(SQLException e) { }
            }
        }
 }

}

 

Java实现数据库连接池例子

Java实现数据库连接池例子 ====================== ConnectionPoolUtil.java package com.util; import jav...
  • liuzongxi
  • liuzongxi
  • 2015年05月14日 17:21
  • 1459

自己用Java编写的连接池

参考网上各方面的资料,自己编写了一个连接池,不过连接池存在一些问题,希望大神们指点,不多说了,直接在代码上有注释: package com.tyxh.mypool; import java.io....
  • tayanxunhua
  • tayanxunhua
  • 2013年08月21日 15:29
  • 5218

Java数据库连接池实现原理

一般来说,Java应用程序访问数据库的过程是:   ①装载数据库驱动程序;   ②通过jdbc建立数据库连接;   ③访问数据库,执行sql语句;   ④断开数据库连接。 public class ...
  • tuke_tuke
  • tuke_tuke
  • 2016年05月29日 16:33
  • 12623

Java连接池详解

http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html 对于共享资源,有一个很著名的设计模式:资源池(Resou...
  • fangquan1980
  • fangquan1980
  • 2016年09月04日 05:31
  • 18694

FTPClient连接池的实现

最近在写一个FTP上传工具,用到了Apache的FTPClient,为了提高上传效率,我采用了多线程的方式,但是每个线程频繁的创建和销毁FTPClient对象势必会造成不必要的开销,因此,此处最好使用...
  • suifeng3051
  • suifeng3051
  • 2015年10月08日 10:59
  • 11342

Java 连接池实现

  • 2008年06月22日 09:51
  • 14KB
  • 下载

JDBC连接池的简单实现

先说明一下,我本身是做android开发的,java web是我的弱项,只是近来京东云免费,于是去折腾了几下,有了些许经验,特作分享。如果文章中内容有误,还请各高手指正。 我在web端,需要连接数据库...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年07月02日 21:51
  • 8008

数据库连接池的设计思路及java实现

connectionPool.DBConnectionManager package connectionPool; import java.sql.Connection; import j...
  • shijinupc
  • shijinupc
  • 2012年08月06日 17:07
  • 10027

Java实现数据库连接池例子

Java实现数据库连接池例子 ====================== ConnectionPoolUtil.java package com.util; import jav...
  • liuzongxi
  • liuzongxi
  • 2015年05月14日 17:21
  • 1459

自己用Java编写的连接池

参考网上各方面的资料,自己编写了一个连接池,不过连接池存在一些问题,希望大神们指点,不多说了,直接在代码上有注释: package com.tyxh.mypool; import java.io....
  • tayanxunhua
  • tayanxunhua
  • 2013年08月21日 15:29
  • 5218
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个直接用java类实现连接池的代码例子
举报原因:
原因补充:

(最多只允许输入30个字)