⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connectionpool.java

📁 大家好啊 快来抢购J2ME东东 挺不错的啊 不要后悔啊 抓住机会
💻 JAVA
字号:
package com.ora.jsp.sql;

import java.sql.*;
import java.util.*; 

/**
 * This class implements a connection pool. It's the same as the
 * ConnectionPool class described in Java Servlet Programming (O'Reilly),
 * copied with permission from Jason Hunter.
 * It's used by the DataSourceWrapper class to provide a JDBC 2.0
 * DataSource interface to the pool.
 *
 * @author Jason Hunter, <jhunter@acm.org>
 * @version 1.0
 */
public class ConnectionPool {
    private Hashtable connections;
    private int increment;
    private String dbURL, user, password;

    public ConnectionPool(String dbURL, String user, String password,
        String driverClassName, int initialConnections, int increment)
        throws SQLException, ClassNotFoundException {

        // Load the specified driver class                               
        Class.forName(driverClassName);                                  
                                                                     
        this.dbURL = dbURL;                                              
        this.user = user;                                                
        this.password = password;                                        
        this.increment = increment;                                      
                                                                     
        connections = new Hashtable();                                   
                                                                     
        // Put our pool of Connections in the Hashtable                  
        // The FALSE value indicates they're unused                      
        for(int i = 0; i < initialConnections; i++) {                    
            connections.put(DriverManager.getConnection(dbURL, user, password),
                Boolean.FALSE);                                
        }                                                                
    }                                                                  
                                                                     
    public Connection getConnection() throws SQLException {            
        Connection con = null;                                           
                                                                     
        Enumeration cons = connections.keys();                           
                                                                     
        synchronized (connections) {                                    
            while(cons.hasMoreElements()) {                                
                con = (Connection)cons.nextElement();                        
                                                                     
                Boolean b = (Boolean)connections.get(con);                   
                if (b == Boolean.FALSE) {                                    
                    // So we found an unused connection.                       
                    // Test its integrity with a quick setAutoCommit(true) call.
                    // For production use, more testing should be performed,   
                    // such as executing a simple query.                       
                    try {                                                      
                        con.setAutoCommit(true);                                 
                    }                                                          
                    catch(SQLException e) {                                    
                        // Problem with the connection, replace it.              
                        connections.remove(con);                                 
                        con = DriverManager.getConnection(dbURL, user, password);
                    }                                                          
                    // Update the Hashtable to show this one's taken           
                    connections.put(con, Boolean.TRUE);
                    
                    // Return the connection
                    return con;
                }                                                            
            }                                                              
        }                                                                
                                                                     
        // If we get here, there were no free connections.               
        // We've got to make more.                                       
        for(int i = 0; i < increment; i++) {                             
            connections.put(DriverManager.getConnection(dbURL, user, password),
                Boolean.FALSE);                                
        }                                                                
                                                                     
        // Recurse to get one of the new connections.                    
        return getConnection();                                          
    }                                                                  
                                                                     
    public void returnConnection(Connection returned) {                
        if (connections.containsKey(returned)) {                         
            connections.put(returned, Boolean.FALSE);                      
        }                                                                
    }                                                                  
}                                                                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -