Servlets travando

9 respostas
TLCC

Tenho algumas servlets que estão travando em ambiente de desenvolvimento, estou usando Eclipse + Lomboz. Em sua maioria existe acesso à banco, porém estou fechando a conexão em um bloco finaly de cada uma delas. Em debug a servlet responde quantas vezes forem necessárias porém com conf normal depois de uma segunda ou terceira chamada elas travam e não respondem mais.
Ainda não tive a oportunidade de usá-las em produção mas receio que isso aconteça lá tb.
O que pode ser ou vc acham que nao preciso me preocupar???

Abs…

9 Respostas

agodinho

se vc estiver usando o DBCP (connection pool do jakarta project, que vem com o tomcat - se é que é o tomcat que vc está usando) vc pode habilitar o trace de coneções pra ter certeza de que nada está deixando de ser fechado. qual banco vc está usando? oracle?

TLCC

Estou usando Tomcat v5, Postgre v7 e JNDI…

afamorim

Uma boa forma de vc resolver isso seria começar a separar suas conexões da servltes criando DAO’s.

Escolha uma servlet que esteja travando, separe o codigo do banco em uma classe ExemploDAO, coloque os acessos de banco nela e coloque uns comentariso de debuga na servlet para aonde esta travando.

ps: isso aconteceu comigo, pois não esteva finalizando as conexões.
se sertifique que esta fechando tudo, connection ,preparestament, resultset…

TLCC

então cara eu ja estou fazendo isso
tenho uma classe DataSourceConnection que faz o JNDI
os DAOs chamam conexão em seus contrutores os stmt, pStmt e rs estão sendo fechados bom pelo menos em sua maioria tenho de revisá-los

como posso habilitar o trace de conexões como foi citado pelo agodinhost ???

valew

TLCC

ainda travando e miuto, navego por duas páginas ai pronto trava tudo nada funciona…
engraçado ouvi dizer que esse negócio de byte code era rápido :lol:
mais facil colocar a culpa no java do que assumi-lá neh…

por favor preciso de ajuda!!!

abs

afamorim

Meu velho…
temos que restringir o problema, vc sabe exatamente o momento que trava?

outra coisa, observer o serviço do postgres…
vc esta usando qual SO como servidor?
vamo resolver isso de uma vez logo.

TLCC

ok vamos lá, o postgres está em um servidor linux white box 4 estou testando a aplicação em minha máquina.

Bem, identifiquei o seguinte:
Temos diversas classes DAO sem factory ou coisa do tipo e cada uma delas inicia uma conexão no contrutor e em alguns casos eu utilizo mais de um DAO por servlet.
no bloco finaly de cada servlet eu fecho a conexão com banco, com acho que fecho…

construi o DaraSourceConnection baseado em um artigo do Frankiln do PortalJava a unica diferença eh que adicionei um metodo para fechar conexão

testei a app comm debug e realmente a cada new DAO ele passa pelo getConnection

pode ser isso neh???

abs

afamorim

Tente fazer o seguinte

Cris uma classe chamada PostgresDAO

nela crie um metodo para criar a conexão, vc pode fazer com que o os daos herdem dela ou não, crie um metodo que feche tb.

a difernça maior vai ser que vc fará com que o metodo que retorna a conexão seja chamado dentro de cada metodo ao inves de ser criado no construtor, provavelmente esta dando problema por causa do garbage collector a conexão mesmo fechada fica instaciada enquanto existir o objeto dao.

tente isso, depois me fale.

TLCC

Desculpe a demora mas foi muito simples, antes de chamar o método getConnection de um objeto DataSource, fazemos a verfificação se conexão é nula. Se não for, devolve a conexão do pool…
Simples, esta funfando legal…

Abs

Thiago Caiubi

Criado 4 de abril de 2006
Ultima resposta 26 de abr. de 2006
Respostas 9
Participantes 3