Falae gente,
to com uma coisa que tá me perturbando há muito tempo.
Tenho uma aplicação web deployada. Logo após o deploy, a conexão(via hibernate) com o MySQL funciona numa boa. Depois de um tempo que ela está inativa. A Conexão meio que se quebra e nem com autoReconnectForPools=true ou autoReconnect=true na String de conexão funciona! 
Não to usando datasources agora, mas tentei por datasource no Glassfish e tive o mesmo erro.
O erro é o seguinte:
aí vai o Hibernate.cfg.xml
<!-- Configuração Principal -->
<property name="connection.url">jdbc:mysql://mysql.hospedagemblabla.net/banco?autoReconnectForPools=true</property>
<property name="connection.username">meuLogin</property>
<property name="connection.password">minhaSenha</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- Condiguração do c3p0 --> <!-- descomenta as c3p0 -->
<!-- property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">10</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property -->
<!-- Configurações de debug -->
<property name="show_sql">true</property>
<property name="use_outer_join">true</property>
<property name="hibernate.generate_statistics">true</property>
<property name="hibernate.use_sql_comments">true</property>
HibernateUtil.java
package package
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil
{
private static final SessionFactory sessionFactory;
static
{
sessionFactory = new Configuration().configure("hibernate.cfg.xml")
.buildSessionFactory();
}
public static Session getSession()
{
try
{
return sessionFactory.getCurrentSession();
// Recupera ou cria uma nova sessão. Caso a
// transação tenha sofrido um commit ou rollback,
// a sessão terá sido fechada. Neste caso uma
// nova sessão será criada. Caso contrário, a
// sessão corrente será recuperada.
}
catch (HibernateException e)
{
throw new InfraestruturaException(e);
}
}
public static void beginTransaction()
{
try
{
getSession().beginTransaction();
// Cria ou recupera a transação corrente,
// caso ela não tenha sofrido commit nem
// rollback.
}
catch (HibernateException e)
{
throw new InfraestruturaException(e);
}
}
public static void commitTransaction()
{
try
{
getSession().getTransaction().commit();
// Efetua o commit da transacao e fecha a sessão.
}
catch (HibernateException ex)
{
rollbackTransaction();
throw new InfraestruturaException(ex);
}
}
public static void rollbackTransaction()
{
try
{
getSession().getTransaction().rollback();
// Efetua o rollback da transacao e fecha a sessão.
}
catch (HibernateException ex)
{
throw new InfraestruturaException(ex);
}
}
}
parte do stacktrace do erro
23:33:35,234 INFO [STDOUT] 28/08/2008 23:33:35-org.hibernate.util.JDBCExceptionReporter logExceptions
ERROR: Communications link failure
Last packet sent to the server was 37843 ms ago.
23:33:35,250 INFO [STDOUT] 28/08/2008 23:33:35-org.hibernate.transaction.JDBCTransaction rollback
ERROR: JDBC rollback failed
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
.
.
.
23:33:35,250 INFO [STDOUT] Error: org.hibernate.exception.JDBCConnectionException: could not execute query
Por favor, ajuda! não sei mais o que fazer… 
