)
return null;
if ( (!(vet.isEmpty())) (vet.size() != 0) )
return (Connection) vet.remove(0);
else
if ( (vet.size() != max) (nConTotal != max) ) {
abreConnection();
nConTotal++;
return (Connection) vet.remove(0);
}
else {
wait(); //guarda até que o método notifyAll() ou notify() seja chamado
return getCon();
}
} //fim getCon
static {
try {
min = Integer.parseInt(func.getProperties(geral).getProperty(jdbc.min));
max = Integer.parseInt(func.getProperties(geral).getProperty(jdbc.max));
databaseURL = func.getProperties(geral).getProperty(jdbc.databaseURL);
driverName = func.getProperties(geral).getProperty(jdbc.driverName);
} catch (FileNotFoundException e) {
System.out.println(e.toString());
} catch (IOException e) {
System.out.println(e.toString());
}
} //fim bloco static
/** Construtor privado, pois só deve ser chamado uma vez por getInstancia()
* Este construtor inicaliza o vetor de conexoes e as poe dentro
*/
private Conexao(){
//obriga a rodar o método finalize()
System.runFinalization();
// cria o vetor de conexoes
vet = new Vector(min, 2);
System.out.println(Conexao - Abrindo conexoes. Aguarde ...);
abreTodasConnection();
if (!(flagErroConexao))
System.out.println (Conexao - Conexoes estabelecidas total= + min);
else {
System.out.println (Conexao - Nenhuma conexao foi estabelecida devido a um erro);
vet = null;
}
} //fim const conexao
/** Construtor privado, pois só deve ser chamado uma vez por getInstancia()
* Este construtor inicaliza o vetor de conexoes e as poe dentro
*/
private Conexao(int ncon){
min = ncon;
//obriga a rodar o método finalize()
System.runFinalization();
// cria o vetor de conexoes
vet = new Vector(min, 2);
System.out.println(Conexao - Abrindo conexoes. Aguarde ...);
abreTodasConnection();
if (!(flagErroConexao))
System.out.println (Conexao - Conexoes estabelecidas total= + min);
else
System.out.println (Conexao - Nenhuma conexao foi estabelecida devido a um erro);
} //fim const conexao
/**
* abre uma conexoes
* @throws ClassNotFoundException
* @throws java.sql.SQLException
*/
private synchronized static void abreConnection() {
try {
Class.forName (driverName);
} catch(ClassNotFoundException e) {
System.out.println(Conexao - Erro + e);
}
try{
vet.addElement(DriverManager.getConnection (databaseURL, LOGIN, PASSWORD));
} catch(SQLException e){
flagErroConexao = true;
msgErroConexao = e.toString();
System.out.println(Conexao - Erro: + e);
}
} //fim abreConexoes
/**
* abre TODAS conexoes até o número mímino definido em min
* @throws ClassNotFoundException
* @throws java.sql.SQLException
*/
private synchronized static void abreTodasConnection() {
for (int i=0 ; i min; i++) {
System.out.print(i+-);
abreConnection();
}
nConTotal = min;
System.out.println();
} //fim abreTodasConexoes
/**
* fecha todas as conexoes existentes retirando-as do vetor
* @throws java.sql.SQLException
*/
private synchronized static void fechaConnection() {
while ( !(vet.isEmpty()) ) {
Connection com = (Connection) vet.remove(0);
try {
com.close();
com = null;
} catch(SQLException e) {
System.out.println(Conexao - Erro ao fechar conexão: + e);
}
} //fim while
} // fim fechaConnection
/**
* método finalize é chamado momentos antes do objeto deixar a memória
* Este método é usado para fechar as conexoes
* Este método sobrepoe da classe Object
* @return void - Sem Retorno
* @see java.lang.Object#finalize()
*/
protected void finalize() throws Throwable {
System.out.println(Conexao - Fechando as conexões. Aguarde ... );
fechaConnection();
System.out.println(Conexao - Conexões fechadas com exito );
}
}// Fim aux
Atenciosamente
PAULO BRANCO
DIRETIVA DIGITAL
Kleber Rodrigo Carvalho [EMAIL PROTECTED]
02/05/2002 15:55
Please respond to java-list
To:[EMAIL PROTECTED], [EMAIL PROTECTED]
cc:
Subject:[java-list] Connection Pooling
PessoALL
Estou tentando construir um pool de conexão aqui, mas
de cara entrei neste site da sun, baixei os