Problema com conexão JDBC

Pessoal, boa tarde.

Estou com um problema em minha aplicação. Por mais que eu feche a conexão, resultset e o statment depois do select, é lançada uma Exception no log:


12:56:36,717 INFO  [CachedConnectionManager] Closing a connection for you.  Please close them yourself: org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@64ce2f12
java.lang.Throwable: STACKTRACE
	at org.jboss.resource.connectionmanager.CachedConnectionManager.registerConnection(CachedConnectionManager.java:290)
	at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:423)
	at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849)
	at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)

.
.
.

Apesar da exception lançada, a aplicação funciona normalmente, porém não posso deixar essa exceção sendo lançada o tempo todo.

Segue um dos métodos que realizam o select:


StringBuffer sql = "SELECT......";
ps = getConnectionBI().prepareStatement(sql.toString());
rs = ps.executeQuery();

try {
				
	List<Objeto> lista = new ArrayList<Objeto>();			
	
	while (rs.next()) {
		Objeto objeto= new Objeto();
		
		objeto.setParam...
		
		lista.add(objeto);
	}
	return lista;
	
} catch (Exception e) {
	e.printStackTrace();
} finally {
	rs.close();
	ps.close();
	getConnectionBI().close();
}

Alguém já passou por alguma situação parecida?
Qualquer informação adicional, estou a disposição.

Estou com o mesmo problema, alguém conseguiu resolver?

Creio que esse trecho getConnectionBI().close(); possa estar pegando uma nova conexão e fechando logo em seguida.
A conexão utilizada para executar o SQL você pegou antes e não fechou.
O PreparedStatement consegue pegar a connection que está utilizando e fechá-la com ps.getConnection().close();.
Logo, substitua getConnectionBI().close(); por ps.getConnection().close(); no bloco finally.

Fiz a modificação, mas mesmo assim não adiantou.

Completando o problema: JBoss 4.2.3, ejb 2.1

[quote=dlrodrigues]Fiz a modificação, mas mesmo assim não adiantou.

Completando o problema: JBoss 4.2.3, ejb 2.1[/quote]
Poste seu código

Em um momento do meu código EJB, sera chamado esse método:

[code]public static synchronized ResultSet getResultSet(String datasource, String sql) throws Exception {
ResultSet rs = null;
try {
Statement stm = getConnection(datasource).createStatement();

        rs = stm.executeQuery(sql);
    } catch(Exception exc) {
        exc.printStackTrace();
    }
    return rs;
}[/code]

Depois, será processado a informação do resultSet e no final será chamado esse método:

[code]public static synchronized boolean liberaConexao(ResultSet rs) {
boolean flag;
try {
// if(rs != null && !rs.isClosed())
rs.close();
// if(rs.getStatement() != null && !rs.getStatement().isClosed())
rs.getStatement().close();
// if (rs.getStatement().getConnection() != null && !rs.getStatement().getConnection().isClosed())
rs.getStatement().getConnection().close();

        rs = null;
        
        flag = true;
    }
    catch(Exception e) {
        System.out.println("Erro ao fechar o rs do m\351todo liberaConexaoAlternativo.");
        flag = false;
    }
    return flag;
}

public static synchronized Connection getConnection(String dataSource) throws Exception {
try {
// if(con == null || con.isClosed()) {
if(ds == null) {
ctx = EJBHomeFactory.getContext();
ds = (DataSource)ctx.lookup(dataSource);
}
// con = ds.getConnection();
return ds.getConnection();
// }
} catch(Exception exc) {
exc.printStackTrace();
}
}[/code]

E é ai que dá o erro.