Depois de um tempo para de logar

7 respostas
lucascaton

Pessoal, tenho um sistema feito em JSP, usando Hibernate, banco MySQL e servidor Tomcat.
Assim que inicio o servidor, o login funciona normalmente, mas depois de algumas horas aparece o seguinte erro:

:!: [color=red]org.hibernate.exception.JDBCConnectionException: could not execute query.[/color]

Já pesquisei bastante sobre o problema, mas ainda não consegui resolver.

Meus arquivos estão assim:

:arrow: [color=blue]hibernate.cfg.xml[/color]
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/banco?autoReconnect=true</property>
        <property name="connection.username">user</property>
        <property name="connection.password">passwd</property>
        <property name="connection.autoReconnect">true</property>
        <property name="connection.pool_size">1</property>

        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="show_sql">true</property>

        <mapping resource="model/User.hbm.xml"/>
        <mapping resource="model/ExtratoConexao.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
:arrow: [color=blue]actionAutenticar.jsp[/color]
<%@ page language="java" contentType="text/xml; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@include file="includes/jspheader.jsp" %>

<%
String usuario = request.getParameter("usuario"); 
String password = request.getParameter("password");

org.hibernate.Session sessao = null;
Transaction tx = null;

try{
	sessao = HibernateUtil.getSessionFactory().openSession();
	tx = sessao.getTransaction();
	tx.begin();

	User user = sessao.createQuery("from User u where u.userName='"+usuario+"'").list().iterator().next();
	boolean authenticate = user!=null && user.getPassword().equals(password);
	
	if(authenticate){
		//Armazenar em session
		session.setAttribute("user", user);
		//Gerar tags XML
		out.print("<autenticado>1</autenticado>");
	}else{
		//Gerar tags XML
		out.print("<autenticado>0</autenticado>");
	}	
				
}catch(Exception ex){
	tx.rollback();
	out.print("[x]"+ex.toString());
	
}finally{
	if(tx != null && tx.isActive())
		tx.commit();
	if(sessao != null && sessao.isOpen())
		sessao.close();
}
%>

Um detalhe: se eu reinicio o servidor, tudo volta a funcionar!

Por favor, me ajudem!!!

7 Respostas

lucascaton

Alguém pode me ajudar???

doug

Olá
Verifique se vc está fechando as conexão do banco de dados…
Uma resalva no seu hibernate.cfg.xml, adicione algumas linhas entre a 18 e a 20, cole esse código

<!-- Use the C3P0 connection pool. --> <property name="c3p0.min_size">3</property> <property name="c3p0.max_size">50</property> <property name="c3p0.timeout">1800</property> <property name="c3p0.acquire_increment">10</property>

Espero ter ajudado
Flwsss

fabim

Provavelmente vc nao esta usando pool de connections. Esta usando uma conexao apenas.
Ela deve ter ficado invalida. Utilize o pool, como o colega acima exemplificou, e esses probelmas acabam.

aguiaMen

Boa colocação do Thiago vc pode acrescentar essas configurações no banco de dados para diminuir o TimeOut, e informar sobre o máximo e mínimo de conexões do seu sistema

lucascaton

Gente, primeiramente muito obrigado pela atenção.

Coloquei o pool C3P0 e fiz algumas alterações no código, separei em camadas MVC e agora usando DAO.

O problema agora é no servidor TomCat e Apache.
Bom, aqui funciona assim: eu tenho um servidor Apache HTTPD na porta 80 e o TomCat na 8080. Externamente, está configurado para os dois atender na porta 80, sendo que quando o Apache vê que é páginas JSP, ele joga pro Tomcat, que por sua vez faz o que tem que ser feito.

O problema é o seguinte: teoricamente, as páginas http://www.meudominio.com.br e http://www.meudominio.com.br:8080/meudominio/ deveriam ser iguais.

Mas se eu entro na http://www.meudominio.com.br:8080/meudominio/ tudo funciona.

Já entrando na http://www.meudominio.com.br, aparece o seguinte erro:

Alguém sabe o por quê?!

Obrigadão mais uma vez.
Lucas.

doug

Olá
Acho que esses dois link pode te ajudar
link1
link2

O problema é seu apache que não esta jogando para o tomcat…

Espero que esses link´s sejam utéis
Flws

lucascaton

Acredito fortemente que o problema não é esse, uma vez que quando eu reinicio tudo funciona bem.

Criado 13 de outubro de 2008
Ultima resposta 15 de out. de 2008
Respostas 7
Participantes 4