Pool de Conexão

Olás,

Quando inicio minha aplicação dá a seguinte exceção. Já verifiquei e o BD está ativo, já desabilitei o firewall e já movi o conector jdbc do MySQL para o Tomcat.

Alguém sabe o que pode ser?

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
	at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
	at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252)
	at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:211)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:381)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
	at br.com.scpe.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:14)
	at br.com.scpe.util.HibernateUtil.<clinit>(HibernateUtil.java:8)
	at br.com.scpe.web.filter.ConexaoHibernateFilter.init(ConexaoHibernateFilter.java:19)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)

Segue o context.xml e o arquivo do hibernate:

<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true">
	<Resource name="jdbc/scpeDataSource" 
		auth="Container"
		type="javax.sql.DataSource" 
		maxActive="100" 
		maxIdle="30"
		maxWait="10000" 
		user="root" 
		password="manager"
		driverClassName="com.mysql.jdbc.Driver" 
		url="jdbc:mysql://localhost:3306/scpe?autoReconnect=true" />
</Context> 
<?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="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>            
        <property name="connection.datasource">java:/comp/env/jdbc/scpeDataSource</property>    
        <property name="current_session_context_class">thread</property>
       	<property name="hibernate.hbm2ddl.auto">create</property> <!-- Valores possíveis: create | update | validate -->
        <property name="show_sql">false</property>
        <property name="format_sql">true</property>
    
        <!-- MAPEAMENTO DAS ENTIDADES -->
        <mapping class="br.com.scpe.usuario.Usuario" />
        <!-- 
        <mapping class="br.com.scpe.agencia.Agencia" />
        <mapping class="br.com.scpe.anexo.Anexo" />
        <mapping class="br.com.scpe.conta_bancaria.ContaBancaria" />
        <mapping class="br.com.scpe.ficha.Ficha" />
        <mapping class="br.com.scpe.municipio.Municipio" />
        <mapping class="br.com.scpe.observacao.Observacao" />
        <mapping class="br.com.scpe.permissao.Permissao" />
        <mapping class="br.com.scpe.referencia.Referencia" />
        <mapping class="br.com.scpe.referencia_bancaria.ReferenciaBancaria" />
        <mapping class="br.com.scpe.telefone.Telefone" />
        <mapping class="br.com.scpe.tipo_logradouro.TipoLogradouro" />
        <mapping class="br.com.scpe.uf.Uf" />
         -->
        
    
    </session-factory>
</hibernate-configuration>

Este log está completo? Normalmente, existe uma parte "Caused by: " que detalha um pouco mais o problema ocorrido.

Opá… foi mal, rsrsrsrs… Segue:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
	at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
	at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
	at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252)
	at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:211)
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:381)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
	at br.com.scpe.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:14)
	at br.com.scpe.util.HibernateUtil.<clinit>(HibernateUtil.java:8)
	at br.com.scpe.web.filter.ConexaoHibernateFilter.init(ConexaoHibernateFilter.java:19)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1595)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1585)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1014)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2299)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2220)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
	at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
	at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
	... 26 more
Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
	at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4578)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1296)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2238)
	... 40 more

Tranquilo! 8)

Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)  

Eis o seu problema, rs. Aparentemente, a sua lógica não está pegando o usuário para conectar (o texto que deveria aparecer antes do @localhost). Dá uma verificada nisso.

[quote=Alys]Tranquilo! 8)

Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)  

Eis o seu problema, rs. Aparentemente, a sua lógica não está pegando o usuário para conectar (o texto que deveria aparecer antes do @localhost). Dá uma verificada nisso.[/quote]

pois é, mas aparentemente fiz tudo certo:

<?xml version="1.0" encoding="UTF-8"?>  
<Context reloadable="true">  
    <Resource name="jdbc/scpeDataSource"   
        auth="Container"  
        type="javax.sql.DataSource"   
        maxActive="100"   
        maxIdle="30"  
        maxWait="10000"   
        user="root"   
        password="manager"  
        driverClassName="com.mysql.jdbc.Driver"   
        url="jdbc:mysql://localhost:3306/scpe?autoReconnect=true" />  
</Context>   

Alguma sugestão?

Hmm, uma dúvida: você está usando Tomcat, então imagino que é uma aplicação web, correto? Se for, você criou a referência no web.xml? Algo assim:

<resource-ref>
  <description>Nome para identificar</description>
  <res-ref-name>jdbc/scpeDataSource</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

Ou pode ser também o Tomcat “pregando uma peça” em você. Verifique se, no caminho <Tomcat_Home>/conf/Catalina/localhost, ele criou um arquivo com o nome da sua aplicação, e com o conteúdo do context.xml.

Encontrei o problema :smiley:

no arquivo context.xml, não existe o atributo “user”, mas sim “username”. O engraçado é que peguei o arquivo como exemplo de algum lugar…rsrsrsrsrs, mas enfim, deve ficar conforme o exemplo abaixo

<Resource name="jdbc/mkyongdb" auth="Container" type="javax.sql.DataSource"
               maxActive="50" maxIdle="30" maxWait="10000"
               username="mysqluser" password="mysqlpassword" 
               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/mkyongdb"/>