从心开始

 

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;    
       
    import   java.io.FileNotFoundException;    
    import   java.io.IOException;    
    import   java.sql.Connection;    
    import   java.sql.DriverManager;    
    import   java.sql.ResultSet;    
    import   java.sql.SQLException;    
    import   java.sql.Statement;    
       
    import   org.apache.commons.dbcp.ConnectionFactory;    
    import   org.apache.commons.dbcp.DriverManagerConnectionFactory;    
    import   org.apache.commons.dbcp.PoolableConnectionFactory;    
    import   org.apache.commons.dbcp.PoolingDriver;    
    import   org.apache.commons.pool.ObjectPool;    
    import   org.apache.commons.pool.impl.GenericObjectPool;    
       
       
    public     class   PoolManager  {      
         
    private     static   String     
                driver
    =   " oracle.jdbc.driver.OracleDriver "  ,  // 驱动    
                url  =    " jdbc:oracle:thin:@192.168.0.40:1521:drcom "  ,  // URL    
                Name =   " drcom "  ,  // 用户名    
                Password =   " drcom "  ;  // 密码    
            
         
    private     static   Class driverClass  =    null  ;    
         
    private     static   ObjectPool connectionPool  =    null  ;    
       
         
    public   PoolManager() {           
        }
           
            
         
    /**    
         * 装配配置文件   
         * initProperties       
         
    */
        
         
    private     static     void   loadProperties() {    
             
    try    {    
                java.io.InputStream stream 
    =    new   java.io.FileInputStream(  " config.properties "  );    
                java.util.Properties props 
    =    new   java.util.Properties();    
                props.load(stream);    
                    
                driver 
    =  props.getProperty(  " ORACLE_DRIVER "  );    
                url 
    =  props.getProperty(  " ORACLE_URL "  );    
                Name 
    =  props.getProperty(  " ORACLE_LOGIN_NAME "  );    
                Password 
    =  props.getProperty(  " ORACLE_LOGIN_PASSWORD "  );    
                    
            }
       catch   (FileNotFoundException e)  {    
                System.out.println( 
    " 读取配置文件异常 "  );             
            }
       catch  (IOException ie) {    
                System.out.println( 
    " 读取配置文件时IO异常 "  );    
            }
        
        }
        
            
         
    /**     
         * 初始化数据源    
         
    */
          
         
    private     static     synchronized     void   initDataSource()  {             
             
    if   (driverClass  ==    null  )  {     
                 
    try    {     
                    driverClass 
    =  Class.forName(driver);     
                }
       catch   (ClassNotFoundException e)  {     
                    e.printStackTrace();    
                }
         
            }
         
        }
         
         
         
    /**     
         * 连接池启动    
         * 
    @throws  Exception    
         
    */
          
         
    public     static     void   StartPool()  {    
            loadProperties();    
            initDataSource();     
             
    if   (connectionPool  !=    null  )  {     
                ShutdownPool();     
            }
          
             
    try    {     
                connectionPool 
    =    new   GenericObjectPool(  null  );     
                ConnectionFactory connectionFactory 
    =    new   DriverManagerConnectionFactory(url, Name, Password);     
                PoolableConnectionFactory poolableConnectionFactory 
    =    new   PoolableConnectionFactory(connectionFactory, connectionPool,   null  ,   null  ,   false  ,   true  );     
                Class.forName( 
    " org.apache.commons.dbcp.PoolingDriver "  );     
                PoolingDriver driver 
    =  (PoolingDriver) DriverManager.getDriver(  " jdbc:apache:commons:dbcp: "  );     
                driver.registerPool( 
    " dbpool "  , connectionPool);                  
                System.out.println( 
    " 装配连接池OK "  );     
            }
       catch   (Exception e)  {     
                e.printStackTrace();    
            }
         
        }
         
         
         
    /**     
         * 释放连接池    
         
    */
          
         
    public     static     void   ShutdownPool()  {     
             
    try    {     
                PoolingDriver driver 
    =  (PoolingDriver) DriverManager.getDriver(  " jdbc:apache:commons:dbcp: "  );     
                driver.closePool( 
    " dbpool "  );    
            }
       catch   (SQLException e)  {     
                e.printStackTrace();    
            }
         
        }
             
         
         
    /**     
         * 取得连接池中的连接    
         * 
    @return     
         
    */
          
         
    public     static   Connection getConnection()  {     
            Connection conn 
    =    null  ;     
             
    if  (connectionPool  ==    null  )     
                StartPool();     
             
    try    {     
                conn 
    =  DriverManager.getConnection(  " jdbc:apache:commons:dbcp:dbpool "  );     
            }
       catch   (SQLException e)  {     
                e.printStackTrace();    
            }
         
             
    return   conn;     
        }
         
            
         
    /**    
         * 获取连接   
         * getConnection   
         * 
    @param  name   
         * 
    @return    
         
    */
        
         
    public     static   Connection getConnection(String name) {    
             
    return   getConnection();    
        }
        
         
    /**    
         * 释放连接   
         * freeConnection   
         * 
    @param  conn   
         
    */
        
         
    public     static     void   freeConnection(Connection conn) {    
             
    if  (conn  !=    null  ) {    
                 
    try    {    
                    conn.close();    
                }
       catch   (SQLException e)  {                  
                    e.printStackTrace();    
                }
        
            }
        
        }
        
         
    /**    
         * 释放连接   
         * freeConnection   
         * 
    @param  name   
         * 
    @param  con   
         
    */
        
         
    public     static     void   freeConnection (String name,Connection con) {    
            freeConnection(con);    
        }
        
            
         
    /**    
         * 例子   
         * main   
         * 
    @param  args   
         
    */
        
         
    public     static     void   main(String[] args)  {            
             
    try    {    
                Connection conn 
    =  PoolManager.getConnection();    
                 
    if  (conn  !=    null  ) {    
                    Statement statement 
    =  conn.createStatement();    
                    ResultSet rs 
    =  statement.executeQuery(  " select * from tblgxinterface "  );    
                     
    int   c  =  rs.getMetaData().getColumnCount();    
                     
    while  (rs.next()) {                       
                        System.out.println();    
                         
    for  (  int   i =   1  ;i <= c;i ++ ) {    
                            System.out.print(rs.getObject(i));    
                        }
        
                    }
        
                    rs.close();    
                }
        
                PoolManager.freeConnection(conn);    
            }
       catch   (SQLException e)  {              
                e.printStackTrace();    
            }
        
       
        }
        
       
    }
       
     

posted on 2007-11-05 18:15 飘雪 阅读(1550) 评论(0)  编辑  收藏 所属分类: JAVA技术


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔分类(11)

随笔档案(13)

收藏夹

firends

搜索

最新评论

  • 1. re: udp及tcp穿越NAT
  • 您上述提到的是互联网之间的公网与私网之间的NAT穿越,3g终端可以通过这种方式实现吗?还有3g移动设备的IP是动态分配的,我怎么才能在公网服务器找到这个3G终端?
  • --svurm
  • 2. re: udp及tcp穿越NAT
  • TCP穿越针对的是公网IP,而这个公网ip进过几个NAT,多少层映射到局域网客户端上对大洞无影响,因为这些映射是nat完成的,一层,二层,三层,最终都映射到公网ip上,所以几层NAT对打洞并无影响。
  • --lch
  • 3. re: udp及tcp穿越NAT
  • 您好,感谢您提供的好介绍。请问:如果P2P的两点之间,存在3-4个NAT,P2P也可以通起来吗?从您对NAT的理解,如果通信两端之间存在4个NAT,对那些应用有影响?
  • --xujf
  • 4. re: 系统时间修改方法
  • good
  • --jone
  • 5. re: udp及tcp穿越NAT
  • 评论内容较长,点击标题查看
  • --...

阅读排行榜

评论排行榜