Conexão em Aplicação Web

Ola, gostaria de saber dos mais experientes como vocês fazem as conexões com banco de dados, falo isso relacionado a abertura e fechamento da conexão.

já ouvi dizer que não deve se usar Singleton.

minha dúvida é essa pois tenho tido alguns problemas de lentidão por deixar as conexões abertas numa aplicação Web. como vocês fazem esse tipo de conexão?? estou usando o Pool de conexão, porém tenho enfrentado problemas de lentidão!

Configure o container para derrubar as conexões inutilizadas! Consulte o manual do seu servidor para saber como proceder!

[quote=aeciovc]Ola, gostaria de saber dos mais experientes como vocês fazem as conexões com banco de dados, falo isso relacionado a abertura e fechamento da conexão.

já ouvi dizer que não deve se usar Singleton.

minha dúvida é essa pois tenho tido alguns problemas de lentidão por deixar as conexões abertas numa aplicação Web. como vocês fazem esse tipo de conexão?? estou usando o Pool de conexão, porém tenho enfrentado problemas de lentidão![/quote]

Então utiliza um Pool de conexão.

Há varias opção só escolher uma.

http://onjava.com/pub/a/onjava/2006/04/19/database-connection-pooling-with-tomcat.html?page=1

Bom dia

Para uma aplicação web é muito recomendado a utilização de Pool de conexões, existem diversas formas de implementar um pool, a mais utilizada e recomendada é utilizar direto no conteiner.

Da uma olhada nesse link http://www.plugmasters.com.br/sys/materias/735/1/Conex%E3o-JNDI-utilizando-container-Tomcat, aqui ensina como configurar um pool no Tomcat.

Falou.

eu já utilizo Pool de Conexão, mas só isso basta pra que o Contanier não fique cheio de consultas e tal??

falo isso, porque minha aplicação está lenta!

e estou em dúvida quanto ao modelo que montei que é mais o menos assim:

todos os DAO para obterem conexão chamam um método estático como exemplo:

connection = Conexao.getConexao();

e no meu método estático está assim:

[code]

if ((conexao == null) || (conexao.isClosed()) ) {
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup(“java:comp/env”);

			DataSource ds = (DataSource) envCtx.lookup("jdbc/aplicacao");

			conexao = ds.getConnection();
			conexao.setAutoCommit(false);
			conexao.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
			
		} catch (Exception ex) { 
			ex.printStackTrace(); 
			}
	}

	return conexao;
}[/code]

estou em dúvida se esse é o modo mais correto de se fazer!

Estou passando pelo mesmo problema…

minha duvida é quando usar o getConnection().close;
pois se eu utilizar em todos os metodos do DAO no bloco FINNALY, pode ser que
meu método chame outro método que tenha o fechamento da conexão também.

Então eu pergunto quando fechar a conexão?