Singleton em aplicação web tem algum problema?

Caros, tem esse trecho de código de uma classe Dao.

A minha dúvida é tem algum problema usar a mesma instância com vários clientes acessando?

public static ClienteDao getInstance() {
		if (singleton == null) {
			singleton = new ClienteDao();
		}
		return singleton;
	}

Nas servlets de controle sempre faço assim:

ClienteDao clDao = ClienteDao.getInstance();

Olha só…problema acho q não tem não …mas é melhor que você implemente os seus métodos de persistência como synchronized para que não haja conflitos na hora em que vários usuários acessarem o mesmo método. Isso pode comprometer a performance do sistema também. Pense bem se há necessidade dessa forma de implementação.

Abrax.

bem, eu utilizo singleton tb em minhas aplicações WEB, e tento sempre re-utiliza-las para aplicações desktop, ex: toda a minha regra de negócios eu a re-utilizo em ambos os ambientes, teria algum problema, ou algo de deveria observar ?

Você terá problemas a partir do momento em que você distribuir a parte server-side da aplicação entre várias máquinas. Você terá um singleton por JVM.
No mais, trate os problemas de concorrência, conforme os colegas indicaram. Acho que o mais seguro é inicializar seu singleton num bloco static.

Não coloquei o tipo:

private static ClienteDao singleton;

Também utilizo em desktop, mas a grande duvida foi quando fiz para web.

Mas blz, valeu pela ajuda, de todos. :smiley:

http://www.guj.com.br/posts/list/60108.java

Singleton não é recomendado em ambiente Java EE, pois os application servers possuem vários [google]classloaders[/google]. E cada classloader terá sua instância de singleton, que deixa de ser única.

Se você realmente precisar de um Singleton coloque uma instância em escopo de application.

Uma alternativa bem nojenta, é criar um ServletContextListener para interceptar a inicialização do Servlet. Lá, jogue uma instância do seu singleton no ServletContext.

Cara, de boa, nao utilize singleton para Java EE…
pq se utilizar vai perder mto tempo com buracos para tapar…

leandro

e quais seriam os problemas ocorridos de se utilizar singleton em web ?

michel,

esses problemas seriam a curto ou longo prazo ?