Problema com SessionFactory

8 respostas
G

Olá pessoal.

Estou com um sério problema aqui. Espero que vocês possam me ajudar a identificar o que está causando isso. Minha aplicação até ontém estava funcionando… mas hoje ela resolveu não funcionar mais. Como eu sei que computador não tem vontade própria… rs… deve ser alguma problema de configuração de algum tipo.

O problema é o seguinte… quando eu chamo o método openSession da uma instânca de SessionFactory a aplicação simplesmente trava.

Alguém tem alguma idéia de o que pode estar causando isso?


public class HibernateUtility {

    private static SessionFactory factory;
        
    static {
    	//Bloco estático que inicializa o Hibernate
    	try {
        factory = new Configuration().configure().buildSessionFactory();
        
    	} catch (Exception e) {
    		
    		e.printStackTrace();
    		factory = null;
    	}
    }
    
    public static Session getSession() {        
    	//Retorna a sessão aberta    	
    	return factory.openSession();     // <-- E nesse momento que a aplicação deixa de responder.   
    }
    
}

8 Respostas

G

Olha só que estranho… se eu for debugando passo a passo não trava…

Será que pode escar ocorrendo um dead-lock em algum lugar??? Mas o que poderia estar causando isso?

Alguém tem alguma idéia?

G

Esse é o log do hibernate:

5609 [http-80-Processor24] INFO org.hibernate.connection.DriverManagerConnectionProvider  - Using Hibernate built-in connection pool (not for production use!)

5609 [http-80-Processor24] INFO org.hibernate.connection.DriverManagerConnectionProvider  - Hibernate connection pool size: 20

5609 [http-80-Processor24] INFO org.hibernate.connection.DriverManagerConnectionProvider  - autocommit mode: false

5672 [http-80-Processor24] INFO org.hibernate.connection.DriverManagerConnectionProvider  - using driver: org.postgresql.Driver at URL: jdbc:postgresql://saturno/animaltrace

5672 [http-80-Processor24] INFO org.hibernate.connection.DriverManagerConnectionProvider  - connection properties: {user=animaltrace, password=animaltrace}

5672 [http-80-Processor24] DEBUG org.hibernate.connection.DriverManagerConnectionProvider  - total checked-out connections: 0

5672 [http-80-Processor24] DEBUG org.hibernate.connection.DriverManagerConnectionProvider  - opening new JDBC connection

Ele tenta abrir uma conexão JDBC… não dá nenhuma exceção, mas tb não vai para frente… fica parado… ou seja, trava!

Lord

olá …

Cara tenta fazer o seguinte :

public static Session getSession() {          
         if(factory == null || factory.isClosed())        
        	 return factory.openSession();     
         
         return null;
      }

espero que ajude !!!

G

Não seria o contrário??? Se factory estiver fachado ou for null retorna null?

Lord

ops !!!

vc tem razão !!!

mas vc jah testou ???

G

Desculpe… o sistema na verdade para quanto eu tento criar o SessionFactory… estou dobugando e parece que ele está disparando essa Exception silenciosamente:

Um erro de I/O ocorreu ao ler do núcleo (backend) - Exception: java.net.SocketException: Software caused connection abort: recv failed
Stack Trace:

java.net.SocketException: Software caused connection abort: recv failed

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(Unknown Source)

at java.io.BufferedInputStream.fill(Unknown Source)

at java.io.BufferedInputStream.read(Unknown Source)

at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:166)

at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnectionV3(AbstractJdbc1Connection.java:301)

at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJdbc1Connection.java:214)

at org.postgresql.Driver.connect(Driver.java:139)

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)

at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)

at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1933)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1216)

at br.com.wwwt.animaltrace.util.HibernateUtility.<clinit>(HibernateUtility.java:29)

at br.com.wwwt.animaltrace.bd.fachada.HibernateFacade.consultar(HibernateFacade.java:77)

at br.com.wwwt.animaltrace.bd.fachada.HibernateFacade.consultar(HibernateFacade.java:72)

at br.com.wwwt.animaltrace.bd.dao.impl.hibernate.HibernateUsuarioDAO.buscar(HibernateUsuarioDAO.java:23)

at br.com.wwwt.animaltrace.struts.actions.UsuarioAction.login(UsuarioAction.java:133)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)

at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)

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 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)

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:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)

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(Unknown Source)

End of Stack Trace

G

O mais estranhdo de tudo é que se eu for debugando passo a passo ele passa desse ponto…

G

Conseguimos resolveri aki. O problema era no servidor, que, por algum motivo, tinha um processo travado tentando conexão com o banco, e, por isso, novas conexões não conseguiam ser estabelecidas.

Criado 8 de novembro de 2007
Ultima resposta 13 de nov. de 2007
Respostas 8
Participantes 2