Quebra de conexao

Boa tarde a todos.

Eu estou com um problema aqui, e gostaria da ajuda do pessoal do GUJ para me dar uma força.
O problema é o seguinte, eu to com uma aplicação web rodando, ela usa Hibernate + VRaptor + Mysql, ja esta tudo “pronto”, a não ser uma coisa, quando eu inicio o TomCat ela roda normalmente, exibi as tabelas e tudo, mais depois de uns 40 segundos ela cai, e me lança a seguinte exeption:

[code]org.hibernate.exception.JDBCConnectionException: could not execute query
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66

<-------------------------------------------------------------------------------------------------------------->

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 91.038 milliseconds ago. The last packet sent successfully to the server was 8 milliseconds ago.
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

<---------------------------------------------------------------------------------------------------------->

java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2497)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2949)[/code]

Pelo oque eu pude entender a conexão com o Mysql foi perdia, mais porque?
o meu hibernate.properties esta assim:

hibernate.dialect = org.hibernate.dialect.MySQLInnoDBDialect hibernate.connection.driver_class = com.mysql.jdbc.Driver hibernate.connection.url = jdbc:mysql://***.***.***.***/*** hibernate.connection.username = usuario hibernate.connection.password = ****** connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider HIBERNATE.SHOW_SQL = TRUE HIBERNATE.FORMAT_SQL = TRUE hibernate.c3p0.min_size = 50 hibernate.c3p0.max_size = 30 hibernate.c3p0.timeout = 28800 hibernate.c3p0.max_statements = 50 hibernate.c3p0.idle_test_period = 5000 hibernate.c3p0.acquire_increment = 5

Alguma ideia?Talvez o meu c3po estja errado?

Desde de ja agradeço.
Arthur dos Santos

ola, ArthurTurtle tudo bem?

ja tentou trocar o driver de conexao do mysql, baixe o mysql-connector-java-5.1.16.zip no site http://dev.mysql.com/downloads/mirror.php?id=402367
e tente novamente, pode ser isto.

Como está sua DAO que executa as consultas?
Posta aí…

o meu DAO esta assim:

[code]
@Resource
public class BandDao {

private Session session;

public BandDao() {
	this.session = new HibernateUtil().openSession();
}

public void adiciona(Band teve) {
	Transaction tx = session.beginTransaction();
	session.save(teve);
	tx.commit();
	session.close();
}

public void atualiza(Band teve) {
	Transaction tx = session.beginTransaction();
	session.update(teve);
	tx.commit();
	session.close();
}

public void remove(Band teve) {
	Transaction tx = session.beginTransaction();
	session.delete(teve);
	tx.commit();
	session.close();
}
public void limpaTabela(Band teve){
	Transaction tx =session.beginTransaction();
	session.createQuery("delete from Band").executeUpdate();
	tx.commit();
	session.close();
}


@SuppressWarnings("unchecked")
public List<Band> lista() {
	return session.createCriteria(Band.class).list();
}
public List<Band> listaseg() {
	Query query=session.createQuery("select diaDaSemana from Band as diaDaSemana where" +
			" diaDaSemana.diaDaSemana=:paramDia order by diaDaSemana.horario");
	query.setParameter("paramDia", "Segunda Feira");

	return query.list(); 
}[/code]

eu troquei o drive do mysql para o que vc recomendou baixar mais esta dando o mesmo problema…

eu ja ia me esquecendo, eu uso o servidor Mysql da locaweb e la a varivael wait_timeout esta configurada para 15 segundos, por tanto acho q o problema esta no pool de conexão mesmo, talvez eu tenha errado na hora de configurar o c3p0, mais como nunca havia mechido nele antes não sei se esta certo ou errado…
se alguem ver algum erro ali em cima… porfavor me avise pq eu ja to ficando meio loko com isso…

Vc tá usando SPRING??

Pelo que eu vi você abre a session no construtor da classe e fecha a mesma no final de cada método.

Se você chamar 2 métodos do mesmo DAO seguidos vai dar problema porque o primeiro método fechou a session.

Por se tratar de um sistema web, seria melhor você abrir uma sessão por transação ao invés de abrir uma por DAO e fechar no final do método. Da uma procurada por “Open Session in View”, o próprio Hibernate sugere uma abordagem dele.

Faça um teste…
Coloque dentro dos métodos crud o comando do seu construtor…
Ex:

     public void adiciona(Band teve) {  
         this.session = new HibernateUtil().openSession();
         Transaction tx = session.beginTransaction();  
         session.save(teve);  
         tx.commit();  
         session.close();  
     }

Veja se vai resolver…se resolver te passo uma solução mais inteligente…

Att,