Singleton de conexão com o SGBD  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
pgnt
Debugger
[Avatar]

Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline


Prezados;

Aderi recentemente à utilização de um singleton para tratar a conexão com o banco de dados.

Hospedei recentemente um sistema num servidor onde o SGBD tinha um 'timeout' para conexões abertas. Ele então fechava a conexão de seu lado por conta, fazendo com que o singleton retorne uma instância de conexão sem referências gerando uma exception (NullPointer no caso, não de conexão com o banco).

Além disso, mesmo funcionando bem em desenvolvimento será que, se um singleton mantém uma conexão aberta o tempo todo, isso não pode causar um vazamento de memória ("leak") no host do SGBD?

Por acaso algum de vcs conseguiram implementar um singleton de conexão de forma segura?
Ou, tem alguma opção (sem ser o singleton necessáriamente) que poupe recursos e garanta segurança?

Abaixo está o singleton utilizado.

Obrigado e Abs



saoj
JWizard
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2657
Localização: Chicago, EUA
Offline


Uma connection nao eh thread-safe, ou seja, nao pode ser compartilhada por 2 ou mais threads.

E uma conexao nao deve ser mantida aberta ad eterno.

Usa um pool de conexoes que já toma conta de tudo pra vc. Recomendo o c3p0.


Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
71C4700
JavaEvangelist
[Avatar]

Membro desde: 25/03/2008 08:18:35
Mensagens: 364
Localização: Por ai...
Offline

Normalmente em aplicaçoes Web, onde existem um numero maior de acesso a conexão simutanea ao banco, seria interssante a utilização de um pool de conexão como o DBCP.
A vantagem é que o Container poderia gerenciar isto, descomplando mais uma funcionalidade que não seria necessario implementar no codigo!
uma outra observação seria, caso utilize este Singleton, faça eles serem sincronizados, seria uma outra solução. Apesar de deixar um pouco mais lenta a chamada a este metodo!

[]This is Job!!!°°°°°
pgnt
Debugger
[Avatar]

Membro desde: 18/01/2007 04:27:33
Mensagens: 57
Offline

já vou postar novamente, encontrei um erro

This message was edited 1 time. Last update was at 08/09/2008 16:43:26

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team