[RESOLVIDO] Não consigo estabelecer conexão com banco de dados

Olá,

Criei um site a nível de aprendizado utilizando javaweb, e hospedei ele no jelastic, até ai tudo funcionando normal, consigo acessar a tela inicial de login, porém quando tento fazer login nada acontece, percebi que não esta conseguindo conectar com o banco de dados (phpMyAdmin).
No localhost (workbench) ele conecta corretamente.

abaixo a mensagem que aparece no catalina:

02-Jun-2019 18:29:36.660 WARNING [C3P0PooledConnectionPoolManager[identityToken->2vsjd1a363uyrbxnmwjj|2407b1f]-HelperThread-#0] com.mchange.v2.resourcepool.BasicResourcePool. com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@64454606 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: Access denied for user 'root'@'10.100.24.5' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1686)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1207)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2254)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at jdk.internal.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
02-Jun-2019 18:29:36.661 WARNING [C3P0PooledConnectionPoolManager[identityToken->2vsjd1a363uyrbxnmwjj|2407b1f]-HelperThread-#0] com.mchange.v2.resourcepool.BasicResourcePool. Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@5d3b92e6 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.

E a classe de conexção com o banco de dados:

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ConnectionPool {

	private ComboPooledDataSource dataSource;

	public ConnectionPool() throws PropertyVetoException{
		
		ComboPooledDataSource pool = new ComboPooledDataSource();
		pool.setDriverClass("com.mysql.jdbc.Driver");
		pool.setJdbcUrl("jdbc:mysql://node32749-hidrosistemas-portal.jelastic.saveincloud.net/hidro_sistemas_portal");
		pool.setUser("root");
		pool.setPassword("SENHA");
		pool.setMinPoolSize(1);
		pool.setAcquireIncrement(5);
		pool.setMaxPoolSize(20);
		this.dataSource = pool;
	}
	
	public Connection getConnetion() throws SQLException{
		Connection con = dataSource.getConnection();
		
		return con;
	}
	
}

Já pesquisei bastante sobre o assunto e não encontrei nada que pudesse me ajudar.

Não entendo de javaweb, mas pode ser que:

  • o seu connector que não esteja na versão compatível com seu DB;
  • seu DriverClass esteja errado;
  • de acordo com o StackTrace, o usuário root teve acesso negado. (Access denied for user 'root'@'10.100.24.5' (using password: YES)) então pode ser que algo no seu código na parte de usuário e senha estejam errados.

Se for connector, você vai ter que alterá-lo.
Se for o DriverClass, tente "com.mysql.cj.jdbc.Driver".

Espero ter ajudado. Se não resolver, me perdoe. O importante é que foi de coração rsrs

Libera o acesso remoto para o usuário root.

Não era exatamente isto, na verdade era o ambiente que estava configurado errado, versão do JDK e do Banco de Dados.
Mas você ajudou bastante, atualizei o conector do mysql, o que eu estava usando era muito antigo. atualizei também o .jar do c3p0 que eu estava usando.

1 curtida

@vetta fico feliz que tenha ajudado. Se seu problema foi resolvido, edite o nome do tópico, colocando um [RESOLVIDO] no título, e tbm marque a resposta que foi a solução para seu problema. Explique com mais clareza como vc resolveu, caso não tenha já sido explicado no post, para ajudar posteriormente outros usuários do GUJ.:wink:

Para solucionar o problema, eu reconfigurei o ambiente do Jelastic. Precisei alterar a versão do jdk no tomcat para a mesma versão que estava utilizando no desenvolvimento (jdk 1.8.0_202)
também alterei a versão do MySQL para 8.0.16.
Além disso atualizei o connector do mysql para a última versão disponível. Para isso precisei alterar a classe que cria o pool de conexão alterando o DriverClass para
"com.mysql.cj.jdbc.Driver" e atualizar o .jar do c3p0 que utilizo para criar o pool.
Também precisei alterar a URL do banco de dados conforme o modelo: jdbc:mysql://localhost:port/bd_nameseTimezone=true&serverTimezone=America/Sao_Paulo

1 curtida