📄 connectionadministrator.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 + -