Spring - Problemas conexão com Banco de Dados (Hibernate - MySql)

Bom dia Colegas!
Estou estudando o Spring para implementá-lo no meu projeto.
Adquiri o livro do Yuri Marx P. Gomes: Java na Web com JSF - Spring, Hibernate e Netbeans 6.
Baixei todas as ferraentas indicadas pelo autor e estou implementando o exemplo citado no livro.
Quando vou realizar o teste, está ocorrendo um erro no qual já fiz várias intervenções e não consegui resolver.
A mensagem de erro é a seguinte: “Connections could not be acquired from the underlying database!”.
Utilizo o MySql. O servidor está iniciado, banco e tabelas criados como pede o livro.
Vendo algumas mensagens sobre este erro, algumas pessoas informam que é necessáro “subir” o banco de dados.
Porém, utilizando o netbeans pela parte de serviços a conexão é estabelecida normalmente. Também acesso o banco atráves do MySql sem nenhum problema.
O que pode estar ocorrendo então?
Agradeço a ajuda de todos e envio abaixo o script do exemplo:

applicationContext:

[url]<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
 <!-- (in this case, JDBC-related settings for the dataSource definition

below) -->


<!-- Local C3P0 DataSource que trabalha em qualquer ambiente, em ambientes

de produção use jndi -->





<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">    
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />                
            <property name="generateDdl" value="false" />
            <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
        </bean>
    </property>
</bean>

<!-- Transactio manager para um JPA EntityManagerFactory simples

(alternativa ao JTA) -->


 <!-- Instrui o Spring a realizar gerenciamento transacional declarativo

automático nas classes anotadas -->
tx:annotation-driven/

<!-- PostProcessors par realizar injeção de recursos de acordo com a

especificação JPA (@PersistenceContext, @PersistenceUnit). -->

<!-- PostProcessors para realizara a conversão de execeções nas classes

@Repostiory (das exceções nativas como JPA PersistenceExceptins to Sprng’s
DataAcessException). -->

<!-- Será automaticamente transacional graças ao @Transactional.

EntityManager irá ser auto-injetado graças ao @PersistenceContext. Persistence-
Exceptions irá ser auto-convertido graças ao @Repository. -->




<bean id="contato" class="dominio.Contato" scope="session" />
<bean id="contatoDao" class="dao.ContatoDao" />
<bean id="contatoFacade" class="facade.ContatoFacade">
    <property name="contatoDao" ref="contatoDao" />
</bean>

<bean id="endereco" class="dominio.Endereco" scope="session"/>
<bean id="enderecoDao" class="dao.EnderecoDao"/>
<bean id="enderecoFacade" class="facade.EnderecoFacade">
    <property name="enderecoDao" ref="enderecoDao" />
</bean>

<bean id="meioContato" class="dominio.MeioContato" scope="session"/>
<bean id="meioContatoDao" class="dao.MeioContatoDao"/>
<bean id="meioContatoFacade" class="facade.MeioContatoFacade">
    <property name="meioContatoDao" ref="meioContatoDao" />
</bean>
[/url]

persistence:
[url]

<?xml version="1.0" encoding="UTF-8"?> org.hibernate.ejb.HibernatePersistence dominio.Endereco dominio.Contato dominio.Usuario dominio.MeioContato [/url]

jdbc.properties:

To change this template, choose Tools | Templates

and open the template in the editor.

Configurações para MySQL

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/agenda
jdbc.username=root
jdbc.password=root
jdbc.dialect=org.hibernate.dialect.MySQLDialect

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package facade;

import dao.UsuarioDao;
import dominio.Usuario;
import java.util.List;

/**
*

  • @author Ronaldo
    */
    public class UsuarioFacade {

    private UsuarioDao usuarioDao;

    /** Creates a new instance of UsuarioFacade*/
    public UsuarioFacade(){

    }

    public Usuario gravar(Usuario usuario){
    return usuarioDao.gravar(usuario);
    }

    public void excluir(Usuario usuario){
    usuarioDao.excluir(usuario);
    }

    public Usuario carregar(Integer id){
    return usuarioDao.carregar(id);
    }

    public List obterTodos() {
    return usuarioDao.obterTodos();
    }

    public List ObterPorNome(String nome){
    return usuarioDao.obterPorNome(nome);
    }

    public Usuario obterPorLoginSenha(String login, String senha){
    return usuarioDao.obterPorLoginSenha(login, senha);
    }

    public UsuarioDao getUsuarioDao(){
    return usuarioDao;
    }

    public void setUsuarioDao(UsuarioDao usuarioDao){
    this.usuarioDao = usuarioDao;
    }
    }
    [/code]

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package facade;

import dao.UsuarioDao;
import dominio.Usuario;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import static org.junit.Assert.*;

/**
*

  • @author Ronaldo
    */
    public class UsuarioFacadeTest {

    public UsuarioFacadeTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    /**

    • Test of gravar method, of class UsuarioFacade.
      */
      @Test
      public void testGravar() {
      ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
      Usuario usuario = new Usuario();
      usuario.setLogin(“guest”);
      usuario.setNome(“guest”);
      usuario.setSenha(“guest”);
      System.out.println(“gravar usuario”);
      UsuarioFacade instance = (UsuarioFacade)context.getBean(“usuarioFacade”);
      // Usuario expResult = instance.gravar(usuario);

      Usuario result = instance.gravar(usuario);
      try {
      assertNotNull(result.getIdUsuario() );
      } catch (AssertionError e) {
      fail(“Falhou a gravação de usuário”);

      }
      }

    /**

    • Test of excluir method, of class UsuarioFacade.
      */
      @Test
      public void testExcluir() {
      System.out.println(“excluir”);
      Usuario usuario = null;
      UsuarioFacade instance = new UsuarioFacade();
      instance.excluir(usuario);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

    /**

    • Test of carregar method, of class UsuarioFacade.
      */
      @Test
      public void testCarregar() {
      System.out.println(“carregar”);
      Integer id = null;
      UsuarioFacade instance = new UsuarioFacade();
      Usuario expResult = null;
      Usuario result = instance.carregar(id);
      assertEquals(expResult, result);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

    /**

    • Test of obterTodos method, of class UsuarioFacade.
      */
      @Test
      public void testObterTodos() {
      System.out.println(“obterTodos”);
      UsuarioFacade instance = new UsuarioFacade();
      List expResult = null;
      List result = instance.obterTodos();
      assertEquals(expResult, result);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

    /**

    • Test of ObterPorNome method, of class UsuarioFacade.
      */
      @Test
      public void testObterPorNome() {
      System.out.println(“ObterPorNome”);
      String nome = “”;
      UsuarioFacade instance = new UsuarioFacade();
      List expResult = null;
      List result = instance.ObterPorNome(nome);
      assertEquals(expResult, result);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

    /**

    • Test of obterPorLoginSenha method, of class UsuarioFacade.
      */
      @Test
      public void testObterPorLoginSenha() {
      System.out.println(“obterPorLoginSenha”);
      String login = “”;
      String senha = “”;
      UsuarioFacade instance = new UsuarioFacade();
      Usuario expResult = null;
      Usuario result = instance.obterPorLoginSenha(login, senha);
      assertEquals(expResult, result);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

    /**

    • Test of getUsuarioDao method, of class UsuarioFacade.
      */
      @Test
      public void testGetUsuarioDao() {
      System.out.println(“getUsuarioDao”);
      UsuarioFacade instance = new UsuarioFacade();
      UsuarioDao expResult = null;
      UsuarioDao result = instance.getUsuarioDao();
      assertEquals(expResult, result);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

    /**

    • Test of setUsuarioDao method, of class UsuarioFacade.
      */
      @Test
      public void testSetUsuarioDao() {
      System.out.println(“setUsuarioDao”);
      UsuarioDao usuarioDao = null;
      UsuarioFacade instance = new UsuarioFacade();
      instance.setUsuarioDao(usuarioDao);
      // TODO review the generated test code and remove the default call to fail.
      fail(“The test case is a prototype.”);
      }

}[/code]

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package dao;

import dominio.Usuario;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

/**
*

  • @author Ronaldo
    */

@Repository
@Transactional
public class UsuarioDao {

@PersistenceContext
private EntityManager em;

/** Creates a new instance of UsuarioDado */
public UsuarioDao() {

}

public Usuario gravar(Usuario usuario) throws DataAccessException{
    return em.merge(usuario);
}

public void excluir(Usuario usuario) throws DataAccessException {
    em.remove(carregar(usuario.getIdUsuario()));
}

public Usuario carregar(Integer id) throws DataAccessException {
    return em.find(Usuario.class, id);
}

public List obterTodos() throws DataAccessException{
    return em.createQuery("SELECT u FROM Usuario u").getResultList();
}

public List obterPorNome(String nome) throws DataAccessException{
    Query qry = em.createQuery("SELECT u FROM Usuario u WHERE u.nome LIKE :nome");
    qry.setParameter("nome", "%" + nome + "%");
    return qry.getResultList();
}

public List obterPorLogin(String login) throws DataAccessException{
    Query qry = em.createQuery("SELECT u FROM Usuario u WHERE u.login LIKE :login");
    qry.setParameter("login", "%" + login + "%");
    return qry.getResultList();
}

public Usuario obterPorLoginSenha(String login, String senha) throws DataAccessException{
    Query qry = em.createQuery("SELECT u FROM Usuario u WHERE u.login LIKE:login AND u.senha = :senha");

    qry.setParameter("login", login);
    qry.setParameter("senha", senha);

    List resultados = qry.getResultList();
    if(resultados.size() > 0){
        return (Usuario) resultados.get(0);
    } else {
        return null;
    }
}

}

[/code]

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package dominio;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
*

  • @author Ronaldo
    */
    @Entity
    @Table(name = “usuario”)
    @NamedQueries({@NamedQuery(name = “Usuario.findAll”, query = “SELECT u FROM Usuario u”)})
    public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Basic(optional = false)
    @Column(name = “idUsuario”)
    private Integer idUsuario;
    @Basic(optional = false)
    @Column(name = “nome”)
    private String nome;
    @Basic(optional = false)
    @Column(name = “login”)
    private String login;
    @Basic(optional = false)
    @Column(name = “senha”)
    private String senha;
    @OneToMany(mappedBy = “idUsuario”)
    private Collection contatoCollection;

    public Usuario() {
    }

    public Usuario(Integer idUsuario) {
    this.idUsuario = idUsuario;
    }

    public Usuario(Integer idUsuario, String nome, String login, String senha) {
    this.idUsuario = idUsuario;
    this.nome = nome;
    this.login = login;
    this.senha = senha;
    }

    public Integer getIdUsuario() {
    return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
    this.idUsuario = idUsuario;
    }

    public String getNome() {
    return nome;
    }

    public void setNome(String nome) {
    this.nome = nome;
    }

    public String getLogin() {
    return login;
    }

    public void setLogin(String login) {
    this.login = login;
    }

    public String getSenha() {
    return senha;
    }

    public void setSenha(String senha) {
    this.senha = senha;
    }

    public Collection getContatoCollection() {
    return contatoCollection;
    }

    public void setContatoCollection(Collection contatoCollection) {
    this.contatoCollection = contatoCollection;
    }

    @Override
    public int hashCode() {
    int hash = 0;
    hash += (idUsuario != null ? idUsuario.hashCode() : 0);
    return hash;
    }

    @Override
    public boolean equals(Object object) {
    // TODO: Warning - this method won’t work in the case the id fields are not set
    if (!(object instanceof Usuario)) {
    return false;
    }
    Usuario other = (Usuario) object;
    if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
    return false;
    }
    return true;
    }

    @Override
    public String toString() {
    return “dominio.Usuario[idUsuario=” + idUsuario + “]”;
    }

}
[/code]

esse é o seu:

<!-- (in this case, JDBC-related settings for the dataSource definition 
below) --> 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="location" value="classpath:/META-INF/jdbc.properties" /> 
</bean> 

Tira o value=“classpath:/META-INF/jdbc.properties” e coloca value=“classpath:/jdbc.properties”.

Obrigado pelo retorno Romarcio.
Porém, o problema continua.
Vc tem outra sugestão.

Boa noite pessoal!
Alguem tem alguma dica?
Estou ansioso para descobrir a causa mas não tenho conhecimento suficiente.
Obrigado a todos.

Pessoal, bom dia!

Para complementar, substituí o MySql pelo JavaDB e o problema persiste.
Agradeceria muito o retorno de alguem nesta solução.
Bom Carnaval.

[color=darkblue]Meus amigos estou iniciando o estudo com Spring… estou tentando implementar exemplos pequenos para comecar entender como ele funciona.

No meu exemplo estou com a seguinte situacao.
Tenho um classe ApplicationContext.xml com os beans declarados… nao sei se estao declarados corretamente, alguem me ajude, por favor, [/color]

<?xml version="1.0" encoding="UTF-8"?>

[color=blue]estou implementando um classe para testar o exemplo, porem esta dando erro na declaracao do ApplicationContext e na classPathXmlApplicationContext [/color]

public class IniciaUsandoSpring {
public static void main(String[] args){

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
“classpath:ApplicationContext.xml”);

Computador computador = (Computador)
applicationContext.getBean(“computadorBean”);

computador.ligar();
}
}

[color=darkblue]
sera que preciso configurar alguma coisa? ou importar alguma biblioteca?
alguem pode me ajudar?

Abraços
Ezequiel [/color]

Colegas, boa tarde!

Alguém se habilita a me ajudar na solução?
Obrigado

Meu amigo, até gostaria de ajudar se tivesse mais conhecimento Spring, mas estou iniciando agora tbm…
Quanto ao meu problema ja consegui resolver importando algumas bibliotecas…