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

📄 connectionadministrator.java

📁 java 小型系统连接池参照适用于中小型网站
💻 JAVA
字号:
package ntis.com.util;

import ntis.com.base.Operator;
import java.util.StringTokenizer;
import java.sql.*;

public class ConnectionAdministrator implements Operator {
  public static final int GET_CONNECTION    = 1;
  public static final int RETURN_CONNECTION = 2;
  private ConnectionAdministratorMethod method = null;

  public ConnectionAdministrator() {}

  public void init(String[] params) throws Exception {
    /**@todo: 偙偺 ntis.com.base.Operator 儊僜僢僪傪幚憰*/
    method = new ConnectionAdministratorMethod(params);
  }

  public Object[] execute(int type, Object[] params) throws Exception {
    /**@todo: 偙偺 ntis.com.base.Operator 儊僜僢僪傪幚憰*/
    switch(type) {
      case GET_CONNECTION    :
        method.getConnection();
      break;
      case RETURN_CONNECTION :
//      returnConnection();
      break;
    }

    return null;
  }
}

class ConnectionAdministratorMethod {
  private int number = 0;
  private int sweep  = 0;
  private String driver   = "";
  private String url      = "";
  private String user     = "";
  private String passWord = "";

  private ConnectionData connectionDatas[] = null;

  public ConnectionAdministratorMethod(String[] params) throws Exception {
    if(params != null) {
      for(int i = 0; i < params.length; i++) {
        StringTokenizer _st = new StringTokenizer(params[i], "=");
        String _key   = _st.nextToken();
        String _value = _st.nextToken();

        if(_key.equals("NUMBER")) {number = Integer.parseInt(_value);}
        if(_key.equals("SWEEP"))  {sweep  = Integer.parseInt(_value);}
        if(_key.equals("DRIVER"))   {driver   = _value;}
        if(_key.equals("URL"))      {url      = _value;}
        if(_key.equals("USER"))     {user     = _value;}
        if(_key.equals("PASSWORD")) {passWord = _value;}
      }
    }

    System.out.println("NUMBER   = " + number);
    System.out.println("SWEEP    = " + sweep);
    System.out.println("DRIVER   = " + driver);
    System.out.println("URL      = " + url);
    System.out.println("USER     = " + user);
    System.out.println("PASSWORD = " + passWord);

    DriverManager.registerDriver((Driver)Class.forName(driver).newInstance());
//  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    connectionDatas = new ConnectionData[number];

    for(int i = 0; i < number; i++) {
      connectionDatas[i] = new ConnectionData();
    }
  }

  public synchronized Connection getConnection() throws Exception {
    Connection _connection = null;

    while(true) {
      for(int i = 0; i < connectionDatas.length; i++) {
        if(!connectionDatas[i].isReserved()) {
          _connection = connectionDatas[i].getConnection();

          if(_connection == null) {
            _connection = DriverManager.getConnection(url, user, passWord);
            connectionDatas[i].setConnection(_connection);
          }

          connectionDatas[i].reserve();
          break;
        }
      } // for(int i = 0; i < connectionDatas.length; i++)

      if(_connection == null) {wait();}
      else {break;}
    } // while(true)

    return _connection;
  }

  public synchronized void returnConnection(Connection connection) throws Exception {
    try {
      for(int i = 0; i < connectionDatas.length; i++) {
        if(connectionDatas[i].getConnection() == connection) {
          connectionDatas[i].release();

          try {
            connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
            connection.setAutoCommit(true);
          }
          catch(SQLException e) {
            connectionDatas[i].setConnection(null);
            connection.rollback();
            connection.close();
            connection = null;
          }

          break;
        } // if(connectionDatas[i].getConnection() == connection)
      } // for(int i = 0; i < connectionDatas.length; i++)
    }
    catch(Exception e) {throw e;}
    finally {notify();}
  }
}

⌨️ 快捷键说明

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