Problema com o padrão de projeto SINGLETON

3 respostas
M

Pessoal,

Uma amiga minha está usando o padrão de projeto SINGLETON para garantir uma ùnica instância de conexão com o SGBD Oracle em uma aplicação Web que utiliza Java,
JSP e JSF.
Após a autenticação do usuário, em alguns formulários, certos “List Box”, cujos dados são provenientes de tabelas Oracle, deixam de serem exibidos após algum tempo na mesma página, sendo necessário dar refresh na mesma para que os mesmos sejam exibidos ou até mesmo reiniciar a aplicação, se isto não resolver.
Pelo que ela andou pesquisando, parece ser uma falha no Singleton em não conseguir manter essa única instância de conexão ativa por muito tempo.
Como não fui eu que desenvolvi a aplicação, não estou por dentro de detalhes do código.
Na tentativa de ajudá-la, resolvi expor a dificuldade dela aqui.
Ela me perguntou se eu já tinha ouvido falar de algum outro padrão de projeto que “pudesse fazer às vezes do Singleton”, mas que contornasse esta “falha”.
Eu até gostaria de ter mais condições de auxiliá-la, mas ainda sou um iniciante nesse maravilhoso “Mundo Java”.
Só tenho uma noção do que sejam os famosos 'Design Patterns", mas ainda não estudei a fundo e nem usei efetivamente e em grande escala nenhum deles.
Fiz apenas alguns poucos testes com o Singleton em uma pequena classe de conexão com uma base MySQL.
Bem, ficaria muito agradecido se alguém puder me dar alguma dica, conselho ou qq sugestão que possa vir a ajudá-la.
[]'s a todos,

Max Carvalho

3 Respostas

peczenyj

Não estou vendo o código então não posso expressar nenhuma opinião mais completa do que esta: provavelmente não é um problema do padrão e sim da implementação e da forma como é feito o tratamento e obtenção da conexão com o banco de dados.

Em java vc pode ter um singleton por classloader vezes o numero de JVMs que vc esta utilizando (vc pode ter N servidores rodando atrás de um balanceador de carga), então é bom ficar esperto a estes detalhes.

Interessante é este projeto, em 2009, usar conexão direta com o banco de dados e usar JSF. Nunca pensaram em usar JPA/Hibernate?

De uma olhada nessa pagina sobre o Pool de Conexões do mesmo:
http://www.hibernate.org/214.html

Vc pode encontrar aqui um bom ponto de partica

andrepestana

Não é nada interessante… :?

Onde eu trabalho tb fazemos conexão direta com banco de dados, além de usar stored procedures para toda e qualquer query no bd. Não que eu queira, sou obrigado. E isso é mais comum do que se imagina.

pcalcado

Que tal usar um Pool de conexões?

[ps: movido]

Criado 31 de janeiro de 2009
Ultima resposta 22 de fev. de 2009
Respostas 3
Participantes 4