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

📄 dbconnectionmanager.java

📁 一个JSP的登陆管理系统
💻 JAVA
字号:
package test.db;

import java.util.Vector;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import test.Configuration;

public class DBConnectionManager {
  private final static DBConnectionManager instance = new DBConnectionManager(); //单子模型
  private DBConnectionPool pool;

  public static DBConnectionManager getInstance() {
    return instance;
  }

  public Connection getConnection() throws SQLException {
    return pool.getConnection();
  }

  public void freeConnection(Connection con) throws SQLException {
    pool.freeConnection(con);
  }

  private DBConnectionManager() {
    init();
  }

  private void init() {
    Configuration cfg = Configuration.getInstance();
    String db_driver = cfg.getValue("DB.DRIVER");
    String db_url = cfg.getValue("DB.URL");
    String db_user = cfg.getValue("DB.USER");
    String db_password = cfg.getValue("DB.PASSWORD");
    int db_maxConn = Integer.parseInt(cfg.getValue("DB.MAX_CONNECTIONS"));
    try {
      Class.forName(db_driver);
    }
    catch (ClassNotFoundException ex) {
      System.out.println(ex);
    }
    pool = new DBConnectionPool(db_url, db_user, db_password, db_maxConn);
  }

  class DBConnectionPool {
    private Vector freeConnections = new Vector();
    private int maxConn;
    private int connNumb;
    private String URL;
    private String password;
    private String user;

    public DBConnectionPool(String URL, String user, String password,
                            int maxConn) {
      this.URL = URL;
      this.user = user;
      this.password = password;
      this.maxConn = maxConn;
    }

    public synchronized void freeConnection(Connection con) {
      freeConnections.addElement(con);
      connNumb--;
      notifyAll();
    }

    public synchronized Connection getConnection() throws SQLException {
      Connection con = null;
      if (freeConnections.size() > 0) {
        con = (Connection) freeConnections.firstElement();
        freeConnections.removeElementAt(0);
        try {
          if (con.isClosed()) {
            con = getConnection();
          }
        }
        catch (SQLException e) {
          con = getConnection();
        }
      }
      else if (maxConn == 0 || connNumb < maxConn) {
        con = newConnection();
      }
      if (con != null) {
        connNumb++;
      }
      return con;
    }

    private Connection newConnection() throws SQLException {
      Connection con = DriverManager.getConnection(URL, user, password);
      return con;
    }
  }

}

⌨️ 快捷键说明

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