`

dbcp连接池实现

阅读更多

DBCP是Apache的一个开源项目:
commons.dbcp.jar
http://jakarta.apache.org/commons/dbcp/index.html

DBCP依赖Apache的另外2个开源项目
commons.collections.jar和commons.pool.jar

下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。

以下是我的连接池

java 代码
  1. package selfservice;   
  2.   
  3. import java.io.FileNotFoundException;   
  4. import java.io.IOException;   
  5. import java.sql.Connection;   
  6. import java.sql.DriverManager;   
  7. import java.sql.ResultSet;   
  8. import java.sql.SQLException;   
  9. import java.sql.Statement;   
  10.   
  11. import org.apache.commons.dbcp.ConnectionFactory;   
  12. import org.apache.commons.dbcp.DriverManagerConnectionFactory;   
  13. import org.apache.commons.dbcp.PoolableConnectionFactory;   
  14. import org.apache.commons.dbcp.PoolingDriver;   
  15. import org.apache.commons.pool.ObjectPool;   
  16. import org.apache.commons.pool.impl.GenericObjectPool;   
  17.   
  18.   
  19. public class PoolManager {     
  20.     private static String    
  21.             driver="oracle.jdbc.driver.OracleDriver",//驱动   
  22.             url = "jdbc:oracle:thin:@192.168.0.40:1521:drcom",//URL   
  23.             Name="drcom",//用户名   
  24.             Password="drcom";//密码   
  25.        
  26.     private static Class driverClass = null;   
  27.     private static ObjectPool connectionPool = null;   
  28.   
  29.     public PoolManager(){          
  30.     }      
  31.        
  32.     /**  
  33.      * 装配配置文件  
  34.      * initProperties      
  35.      */  
  36.     private static void loadProperties(){   
  37.         try {   
  38.             java.io.InputStream stream = new java.io.FileInputStream("config.properties");   
  39.             java.util.Properties props = new java.util.Properties();   
  40.             props.load(stream);   
  41.                
  42.             driver = props.getProperty("ORACLE_DRIVER");   
  43.             url = props.getProperty("ORACLE_URL");   
  44.             Name = props.getProperty("ORACLE_LOGIN_NAME");   
  45.             Password = props.getProperty("ORACLE_LOGIN_PASSWORD");   
  46.                
  47.         } catch (FileNotFoundException e) {   
  48.             System.out.println("读取配置文件异常");            
  49.         } catch(IOException ie){   
  50.             System.out.println("读取配置文件时IO异常");   
  51.         }   
  52.     }   
  53.        
  54.     /**   
  55.      * 初始化数据源   
  56.      */    
  57.     private static synchronized void initDataSource() {            
  58.         if (driverClass == null) {    
  59.             try {    
  60.                 driverClass = Class.forName(driver);    
  61.             } catch (ClassNotFoundException e) {    
  62.                 e.printStackTrace();   
  63.             }    
  64.         }    
  65.     }    
  66.     
  67.     /**   
  68.      * 连接池启动   
  69.      * @throws Exception   
  70.      */    
  71.     public static void StartPool() {   
  72.         loadProperties();   
  73.         initDataSource();    
  74.         if (connectionPool != null) {    
  75.             ShutdownPool();    
  76.         }     
  77.         try {    
  78.             connectionPool = new GenericObjectPool(null);    
  79.             ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);    
  80.             PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, nullnullfalsetrue);    
  81.             Class.forName("org.apache.commons.dbcp.PoolingDriver");    
  82.             PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");    
  83.             driver.registerPool("dbpool", connectionPool);                 
  84.             System.out.println("装配连接池OK");    
  85.         } catch (Exception e) {    
  86.             e.printStackTrace();   
  87.         }    
  88.     }    
  89.     
  90.     /**   
  91.      * 释放连接池   
  92.      */    
  93.     public static void ShutdownPool() {    
  94.         try {    
  95.             PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");    
  96.             driver.closePool("dbpool");   
  97.         } catch (SQLException e) {    
  98.             e.printStackTrace();   
  99.         }    
  100.     }        
  101.     
  102.     /**   
  103.      * 取得连接池中的连接   
  104.      * @return   
  105.      */    
  106.     public static Connection getConnection() {    
  107.         Connection conn = null;    
  108.         if(connectionPool == null)    
  109.             StartPool();    
  110.         try {    
  111.             conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");    
  112.         } catch (SQLException e) {    
  113.             e.printStackTrace();   
  114.         }    
  115.         return conn;    
  116.     }    
  117.        
  118.     /**  
  119.      * 获取连接  
  120.      * getConnection  
  121.      * @param name  
  122.      * @return  
  123.      */  
  124.     public static Connection getConnection(String name){   
  125.         return getConnection();   
  126.     }   
  127.     /**  
  128.      * 释放连接  
  129.      * freeConnection  
  130.      * @param conn  
  131.      */  
  132.     public static void freeConnection(Connection conn){   
  133.         if(conn != null){   
  134.             try {   
  135.                 conn.close();   
  136.             } catch (SQLException e) {                 
  137.                 e.printStackTrace();   
  138.             }   
  139.         }   
  140.     }   
  141.     /**  
  142.      * 释放连接  
  143.      * freeConnection  
  144.      * @param name  
  145.      * @param con  
  146.      */  
  147.     public static void freeConnection (String name,Connection con){   
  148.         freeConnection(con);   
  149.     }   
  150.        
  151.     /**  
  152.      * 例子  
  153.      * main  
  154.      * @param args  
  155.      */  
  156.     public static void main(String[] args) {           
  157.         try {   
  158.             Connection conn = PoolManager.getConnection();   
  159.             if(conn != null){   
  160.                 Statement statement = conn.createStatement();   
  161.                 ResultSet rs = statement.executeQuery("select * from tblgxinterface");   
  162.                 int c = rs.getMetaData().getColumnCount();   
  163.                 while(rs.next()){                      
  164.                     System.out.println();   
  165.                     for(int i=1;i<=c;i++){   
  166.                         System.out.print(rs.getObject(i));   
  167.                     }   
  168.                 }   
  169.                 rs.close();   
  170.             }   
  171.             PoolManager.freeConnection(conn);   
  172.         } catch (SQLException e) {             
  173.             e.printStackTrace();   
  174.         }   
  175.   
  176.     }   
  177.   
  178. }   

以上创建一个连接池,并从连接池中得到连接,连接池会管理每个连接,以上测试通过。

分享到:
评论

相关推荐

    DBCP连接池所有jar包

    在Web项目开发中,DBCP连接池是不可或缺的一部分,因为它能够有效地管理数据库资源,避免频繁创建和关闭数据库连接,降低系统开销。 首先,让我们来了解一下DBCP的基本概念和工作原理。数据库连接池在初始化时会...

    dbcp 连接池 jar包

    在给定的描述中提到,Hibernate ORM框架就曾使用DBCP作为其默认的连接池实现。 DBCP连接池的工作原理是预先创建一定数量的数据库连接,并将这些连接保存在一个池中。当应用程序需要与数据库交互时,不再直接创建新...

    DBCP连接池所需jar包.rar

    3. **commons-pool-1.5.6.jar**:Apache Commons Pool是对象池设计模式的实现,DBCP连接池依赖于这个库来管理其内部的数据库连接对象。对象池允许开发者在应用程序中复用已经创建的对象,而不是每次需要时都创建新的...

    DBCP连接池的jar包

    DBCP(Database Connection Pool)是Apache组织提供的一种开源数据库连接池实现,全称为"Jakarta DBCP"。它基于Java编写,旨在提高数据库访问效率,通过复用已存在的数据库连接,减少创建和销毁数据库连接时的开销,...

    DBCP连接池jar包

    总之,DBCP作为一款经典的数据库连接池实现,虽然现在可能不是最佳选择,但其原理和使用方式对于理解数据库连接池的工作机制仍具有重要的学习价值。在实际项目中,开发者应根据需求和性能要求来选择合适的数据库连接...

    java dbcp连接池

    总的来说,Java DBCP连接池是Java应用中管理和优化数据库连接的有效工具,通过合理配置和使用,能够显著提升应用的数据库访问性能,同时降低资源消耗。在实际开发中,开发者应根据项目需求和性能要求选择合适的连接...

    dbcp连接池jar包

    标题中的“dbcp连接池jar包”指的是用于实现数据库连接池功能的Java库,即Commons DBCP的jar文件。这个jar包包含了DBCP所需的全部类和资源,开发者可以通过引入这个jar包到项目中,快速地集成数据库连接池功能。 ...

    dbcp连接池jar

    DBCP(Database Connection Pool)是Apache组织提供的一种开源数据库连接池组件,主要...总的来说,DBCP连接池是Java应用程序中用于高效管理数据库连接的重要工具,通过合理的配置和使用,可以显著提升系统运行效率。

    dbcp连接池和配置文件

    **DBCP连接池的工作原理:** 1. **初始化**:在应用程序启动时,DBCP会预先创建一定数量的数据库连接并放入连接池。 2. **请求连接**:当程序需要与数据库交互时,它向连接池请求一个连接。连接池检查是否有空闲的...

    DBCP数据库连接池jar包.zip

    总的来说,DBCP2是一个适用于学习和小型项目的数据库连接池实现,对于初学者来说,通过这个压缩包可以了解数据库连接池的基本工作原理和使用方式,对于开发者而言,它可以提供基本的数据库连接管理功能,但可能需要...

    mysql8 DBCP连接池jar依赖

    用于实现DBCP连接池所用的JAR依赖文件,包括数据库驱动及创建连接池所需的其他依赖: * commons-collections  * commons-dbcp2  * commons-logging  * commons-pool2  * mysql-connector

    DBCP连接池

    DBCP(Database Connection Pool)是Apache组织提供的一个开源数据库连接池组件,全称为...通过合理地配置和使用DBCP连接池,开发者可以在SSH框架下实现高效、稳定的数据库操作,提升整个应用的性能和用户体验。

    dbcp连接池所需包

    总的来说,"dbcp连接池所需包"包括`commons-dbcp.jar`和`commons-pool.jar`,它们是Spring框架中实现高效数据库连接管理的基础。通过使用DBCP,开发者可以创建一个高效的数据库连接池,从而提高应用的并发处理能力,...

    dbcp连接池jar,

    DBCP虽然历史悠久,但在许多现代应用中已被其他更先进的连接池实现如HikariCP、C3P0、Druid等替代,这些连接池通常提供更好的性能和更丰富的功能。不过,理解DBCP的工作原理和使用方式对于理解数据库连接池的基本...

    dbcp连接池常用包

    在标题"dbcp连接池常用包"中,"常用包"指的是DBCP连接池所需的必备库文件,这些文件包含了DBCP的不同版本,分别为1.3、1.4和1.5。每个版本可能对应着不同的功能特性和修复的bug,开发者可以根据项目的兼容性和需求...

    利用dbcp实现数据库连接池

    DBCP(Jakarta DBCP)是Apache软件基金会提供的一个开源数据库连接池实现,它基于Jakarta Commons Pool对象池机制,提供了一种有效管理数据库连接的方式。 在Java应用程序中,频繁地创建和关闭数据库连接会消耗大量...

    dbcp连接池整合jar包

    里面包含了commons-collections-3.1.jar commons-dbcp-1.2.2.jar commons-pool.jar ojdbc6.jar commons-dbcp-1.2.2 连接池的实现 commons-pool 连接池的依赖库 ojdbc6 orcale数据库驱动 到手即用

    dbcp连接池使用例子

    在这个"dbcp连接池使用例子"中,我们将深入理解DBCP的工作原理、配置方法以及如何在实际项目中集成和使用。 DBCP连接池的基本概念: 1. 数据库连接池:在应用程序启动时,预先创建并维护一定数量的数据库连接,这些...

Global site tag (gtag.js) - Google Analytics