Problemas com hibernate  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Olá pessoal,

Estou dando manutenção em uma aplicação web aqui no trampo, meu problema é o seguinte:

Subo a aplicação no servidor, ela funciona normal, no dia seguinte quando chego demanhã, a aplicação não está fazendo login, acusando um erro:



Não tenho nem idéia do que pode ser, mediante o fato de aplicação funcionar normalmente por um tempo, e só depois de um bom tempo ela começa a parar.

Alguém já passou por alvo semelhante? ou tem idéia do que pode ser isto?
[MSN] [ICQ]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Por favor poste o stack trace inteiro da aplicação.

De qualquer forma pode ser algum problema relacionado ao acesso ao banco de dados. Por exemplo um número máximo de conexões sendo atingido. Você usa algum gerenciador de pool?

Former LIPE.
[ICQ]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Bom olhando estes dias consegui o log da aplicação, e o que aparece lá derepente é isso:


** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2739)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2650)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1581)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3004)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:112
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1222)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
at br.com.brti.si.sistemas.placar.core.business.UsuarioBusiness.carregaUsuarioPorLogin(UsuarioBusiness.java:70)
at br.com.brti.si.sistemas.placar.utils.infra.Autenticador.autentica(Autenticador.java:50)
at br.com.brti.si.sistemas.placar.web.servlet.Login.doPost(Login.java:3
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at br.com.brti.si.sistemas.placar.web.servlet.filter.ControleDeSessao.doFilter(ControleDeSessao.java:2
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at br.com.brti.si.sistemas.placar.web.servlet.filter.FiltroDeAutenticacao.doFilter(FiltroDeAutenticacao.java:56)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:17
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:14
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)


Isso começa a acontecer do nada, alguém tem idéia?
[MSN] [ICQ]
ThiagoWorldCoder
JavaEvangelist
[Avatar]

Membro desde: 30/11/2007 10:23:26
Mensagens: 442
Localização: Brazil
Offline

Isso já aconteceu comigo, acho que estava faltando o driver, ou a senha estava errada!

SCJP 6.0 - SUN CERTIFIED JAVA PROGRAMMER
Codificando o mundo para uma vida melhor!!
[MSN]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Mas a aplicação funciona perfeitamente por um tempo, só depois de um tempo que para de funcionar.

Repondendo a pergunta do amigo ali de cima, não pode ser o numero máximo de conexões sendo atingida, pois o problema ocorre em um servidor de testes sem ao menos 1 pessoa acessando.
[MSN] [ICQ]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Bom, pra ajudar eu to disponibilizando o log de ontem pra hoje desde quando parou de funcionar até eu fazer o undeploy e o deploy

Pessoal por favor me ajudem, daki a poko meu chefe me manda embora... hehehehe

 Nome do arquivo log.txt [Disk] Download
 Descrição Log
 Tamanho 67 Kbytes
 Baixado:  103 vez(es)

[MSN] [ICQ]
ThiagoWorldCoder
JavaEvangelist
[Avatar]

Membro desde: 30/11/2007 10:23:26
Mensagens: 442
Localização: Brazil
Offline

Eu tenho uma idéia, faça um teste unitário na sua camada de persistência, verifique se as queries que você está fazendo, e os commits estão legais!
parece que tem um caso que você está tentando fazer uma query com a sessão fechada!

SCJP 6.0 - SUN CERTIFIED JAVA PROGRAMMER
Codificando o mundo para uma vida melhor!!
[MSN]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Aleluia, alguém respondeu... hehehe

Então, mas como testar se tudo está funcionando normal e só depois de várias horas o sistema para? Tipo ontem deu esse problemas era umas 14:00... reiniciei o tomcat voltou a funcionar, e só foi acontecer denovo hoje por voltar das 15:00... então que dizer, o sistema funciona 24h sem dar nada, e derepente, as vezes sem ninguem acessando nada, ele para, e começa dar akelas exception que tah no log.

This message was edited 1 time. Last update was at 18/04/2008 19:35:08

[MSN] [ICQ]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

O seu problema é um classico! O hibernate esta usando um pool de conexao, e depois de algumas horas dessas conexoes abertas sem uso, o banco de dado as mata, porque as considera nocivas (ele acha que voce provavelmente as esqueceu abertas!). Na hora que o hibernate vai executar alguma coisa, ele pega uma dessas conexoes "bichadas", que nao tem mais ligacao com o banco de dados (o cano de ligacao esta quebrado! broken pipe da socket)

Entao pare de usar o pool de conexao default do hibernate, que é muito ruim e simples. Eles mesmos aconselham voce a nao usar.

Utilize o C3P0, que ele mesmo faz uma checagem pra ver se a conexao que ele esta pegando esta viva ainda. Ele tem outra opcao que usa threads para essa verificacao de tempos em tempos.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Paulo Silveira wrote:O seu problema é um classico! O hibernate esta usando um pool de conexao, e depois de algumas horas dessas conexoes abertas sem uso, o banco de dado as mata, porque as considera nocivas (ele acha que voce provavelmente as esqueceu abertas!). Na hora que o hibernate vai executar alguma coisa, ele pega uma dessas conexoes "bichadas", que nao tem mais ligacao com o banco de dados (o cano de ligacao esta quebrado! broken pipe da socket)

Entao pare de usar o pool de conexao default do hibernate, que é muito ruim e simples. Eles mesmos aconselham voce a nao usar.

Utilize o C3P0, que ele mesmo faz uma checagem pra ver se a conexao que ele esta pegando esta viva ainda. Ele tem outra opcao que usa threads para essa verificacao de tempos em tempos.



Hummm vou pesquisar sobre esse C3P0... valew hein... espero que seja este o problema, e também estou iniciando um novo projeto, jah vou utilizar esse C3P0...

Muito Obrigado a todos... e assim que eu testar esse lance, eu posto novamente aqui o resultado.
[MSN] [ICQ]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Então seguindo o link:

http://www.hibernate.org/214.html



Bom, por enquanto esta funcionando, mas apresenta um erro de tempos em tempos que é:



E derepente surge também o seguinte erro.




Reparei que esses erros ocorrem quando o sistema está ocioso sem nenhuma requisiçao... agora, quando estah sendo usado, aparentemente nao ocasiona erro.
[MSN] [ICQ]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Aeeeeeeeeeeeeeeeee

Problema resolvido, utilizei esse C3P0 e faz 4 dias que aplicação tah rodando sem parar ou ter que reiniciar o tomcat.

Muito Obrigado a todos.

E sobre este ultimo erro que eu mandei, eu adicionei um parâmetro no log4j.properties que está lá no proprio site do hibernate e parou de dar o erro.

T+
[MSN] [ICQ]
tiorobert
Smalltalk

Membro desde: 12/11/2007 17:40:00
Mensagens: 4
Offline

Como você fez para resolver esse problema?
leandrokjava
JavaGuru
[Avatar]

Membro desde: 15/05/2007 18:35:14
Mensagens: 225
Localização: Porto Alegre-RS
Offline

Eu já vih este problema antes, e que eu me lembro o problema era que as conexõess que estao sendo abertas nao estavam sendo fechadas.

post aqui como resolveu?
att

www.softdevelop.com.br
[Email] [WWW] [MSN]
rodrigo.lopes
JavaChild

Membro desde: 30/03/2010 09:12:14
Mensagens: 115
Offline

Cara que propriedade vc alterou no log4j.properties pra parar de dar esses erros?

estou com o mesmo problema...
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team