Liberar conexão do Pool no Tomcat

3 respostas
H

Pessoal,

configurei o jdbc no Tomcat e utilizo o seguinte código para obter a conexão livre:

Context envCtx = null;
Context ctx = null;
DataSource ds = null;
Connection connection = null;
    	
try
{
	ctx = new InitialContext();
		
	envCtx = (Context)ctx.lookup("java:comp/env");

    	ds = (DataSource)envCtx.lookup("jdbc/MSQLServerDS");
	    	
    	connection = ds.getConnection();
}
catch (NamingException e)
{
	e.printStackTrace();
}
catch (SQLException e)
{
	e.printStackTrace();
}
finally
{
	try
	{
		envCtx.close();
		ctx.close();
		ds = null;
	} 
	catch (NamingException e)
	{
		e.printStackTrace();
	}
	finally
	{
		envCtx = null;
		ctx = null;
	}
}

Bom, apartir daí faço as querys necessárias e vou liberar a conexão para o pool, e é nesse ponto a minha dúvida, qual a melhor maneira de fazer isso, pois entendo que se eu utilizar o connection.close(); eu estarei fechando a conexão já adquirida pelo pool, a outra solução que encherguei seria nulificar a variável connection = null;. Afinal, qual é a maneira correta de liberar essa conexão?

3 Respostas

jgbt

qunado vc usa:

connection .close();

vc não esta fechando a conexão, na verdade vc esta deveolvendo ela para o pool.

[]'s

lgr

Eu acho que a idéia do pool é que vc n feche mesmo a conexão.
feche o stmt e rs somente.
O pool é quem deve cuidar de fechar.Quando tiver o maximo de conexões “configuradas por vc” ele vai cuidar disso.
O importante é você cuidar de uma conexão que dê problema usand tratamento de exceção.

Cara não sei se ajudaei em alguma coisa mas eu acho que é assim.

H

Então, eu uso connection.close(); depois que executo todas as querys que preciso, isso está no Controller, bem como a aquisição da conexão também está no Controller, ou seja, eu passo a conexão para os DAOs.

Então, era isso que eu queria saber, se o connection.close(); fechava a conexão ou liberava ela para o pool, o meu reiceio era dar trabalho para o pool ter que adquir a conexão novamente.

Criado 3 de outubro de 2006
Ultima resposta 3 de out. de 2006
Respostas 3
Participantes 3