Bean que implementa classes de connectionpool / app web

1 resposta
G

Olá,

estou tentando implementaar um bean que se ocupa em se conectar a um banco de dados utilizando um connectionPool.

Gostaria de saber se estou implementando corretamente esta classe, ou se vcs tem dicas, pois suspeito que esteja avendo 'leak' de conexões ou outros problemas relacionados a esta classe.

Se puderem dar suas opiniões sobre este código, ou indicar classes de connection pool 'free' que sejam faceis de implementar e usar (sem muita complicação), agradeço.

package netos;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.Vector;
import net.sourceforge.esw.util.database.DBConnectionPoolManager;
import net.sourceforge.esw.util.database.IDBConnectionPool;

public class BD {
    
    /*****************************************
    **RETORNA UMA CONEXAO DO POOL**
    ******************************************/ 

    ////PLUGIN
    private static String host = "server";
    private static String user = "user";
    private static String pass = "pass";    
  
    public static Connection getConnection() {
        
        Connection oConnection = null;
        try {
            /*teste pool*/
            DBConnectionPoolManager.initializeDriver( "org.postgresql.Driver" );
            IDBConnectionPool connPool = DBConnectionPoolManager.getInstance().getPool(host,user);
            connPool.setDatabasePassword(pass );
            connPool.setMaxSize(15);
            connPool.setPreferredSize(3);           

            oConnection = connPool.getDBConnection();
        } catch (SQLException se) {	}
        return oConnection;
    }   
    
    /***********************************
    **LIBERA A CONEXAO DO POOL**
    ************************************/
    public static void releaseConnection(Connection oConnection) {
        try {
            IDBConnectionPool connPool = DBConnectionPoolManager.getInstance().getPool(host,user);
            connPool.releaseDBConnection(oConnection);
            oConnection.close();
            oConnection = null;
        } catch(Exception dataSourceConnectionException)  { }
    }
    
    /***********************************
    **OPERAÇÕES NO BANCO              **
    ************************************/
    
    /**********************************
    **CONSULTAS                      **
    ***********************************/
   
    public static ResultSet  pesquisaSet(String query) {
        Connection oConnection = null;
        ResultSet oResultset = null;
        PreparedStatement oPstatment = null;
        
        String oSql = query;
        try {
            oConnection = getConnection();
            oPstatment = oConnection.prepareStatement(oSql);
            oResultset = oPstatment.executeQuery();
        } catch (Exception dataSourceConnectionException) {
        } finally {
            releaseConnection(oConnection);
        }
        return oResultset;
    }
    
    public static String pesquisaStr(String query) {
        
        String output = " ";
        
        Connection oConnection = null;
        ResultSet oResultset = null;
        PreparedStatement oPstatment = null;
        
        String oSql = query;
        try {
            oConnection = getConnection();
            oPstatment = oConnection.prepareStatement(oSql);
            oResultset = oPstatment.executeQuery();
            oResultset.next();
            output=oResultset.getString(1);
            oResultset.close();
            oPstatment.close();
            oConnection.close();
            oPstatment = null;
        } catch (Exception dataSourceConnectionException) {
        } finally {
            releaseConnection(oConnection);
            oConnection = null;
        }
        return output;
    }
}

1 Resposta

G

Também tenho duvudas se um metodo retornando um Resultset é algo seguro de ser feito, pois na classe que o chama posso apenas fechar este resultset, sem ter mais acesso a conexão que está associada.

Fechando o resultset em outra classe, a conexão tb é encerrada?

Criado 4 de outubro de 2006
Ultima resposta 4 de out. de 2006
Respostas 1
Participantes 1