Problema com Tomcat 7 e MySql 5

6 respostas
atilaraphael

Bom dia pessoal,

estou tendo um problema em um servidor aqui na empresa, ele roda um servidor CentOS 6 64bits, JRE 7, Apache Tomcat 7.0.22 e MySql 5.1.52. O meu problema é o seguinte, sempre quando chego na empresa e vou tentar acessar a aplicação, ela me retorna um erro de conexão com o banco; depois que eu restarto o Tomcat, a aplicação funciona normalmente.

Gostaria de saber se alguém tem uma sugestão, pois o servidor fica ligado 24hs e parece que sempre quando muda o dia, ou seja, o relógio vira as 24hs, o Tomcat não consegue mais se conectar ao MySql.

6 Respostas

A

cara,

vc vai ter que investigar na sua aplicação o que está fazendo ocorrer isso, como por exemplo numero excessivo de conexões aberta.

t+

heatcold

o tomcat tem alguma relação com o banco na sua aplicação?

atilaraphael

Olá alissonvla, o servidor fica ligado 24hs mas ninguém acessa ele durante a noite, e eu só abro a conexão com o banco uma vez.

Olá heatcold, na realidade não, mas eu acho estranho que só restartando o Tomcat que tudo volta ao normal.

yoshikichi

Vc está utilizando algum pool de conexão?
Se não:
MySQL fecha conexão ociosa após certo tempo (o padrão é 8 horas)!

atilaraphael

Olá yoshikichi, na minha aplicação sempre verifico se a conexão existe, se não existir eu mando abrir uma conexão com o banco.

public class ConnectionFactory {

	private static Connection conexao;

	public static Connection getConnection() throws ClassNotFoundException, SQLException {
		if (conexao == null) {			
			Class.forName("com.mysql.jdbc.Driver");
			conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/metalurgica", "root", "senha");
		}
		return conexao;
	}

}
yoshikichi
atilaraphael:
Olá yoshikichi, na minha aplicação sempre verifico se a conexão existe, se não existir eu mando abrir uma conexão com o banco.
public class ConnectionFactory {

	private static Connection conexao;

	public static Connection getConnection() throws ClassNotFoundException, SQLException {
		if (conexao == null) {			
			Class.forName("com.mysql.jdbc.Driver");
			conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/metalurgica", "root", "senha");
		}
		return conexao;
	}

}

Então já vi esse tópico algumas vezes aqui no guj.
Na propria especificação do Mysql fala sobre esse problema.
Só editando, utliza um pool de conexões, é melhor.
http://imasters.com.br/artigo/17195/java/pool_de_conexao_jee_tomcat/

Criado 24 de outubro de 2011
Ultima resposta 24 de out. de 2011
Respostas 6
Participantes 4