[RESOLVIDO] Falha ao tentar conectar no banco

Boa noite pessoal.

Estou com uma aplicação web em que uso tomcat 7 + JPA.

Quando tento logar no sistema o tomcat joga a mensagem abaixo no log:

javax.persistence.PersistenceException: Exception [TOPLINK-7060] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException Exception Description: Cannot acquire data source [java:comp/env/jdbc/gesdef]. Internal Exception: javax.naming.NamingException: This context must be accessed through a java: URL

Aguém poderia me ajudar a resolver?

Obrigado.

Parece que o problema é na conexão com o banco de dados. Você está usando JNDI? Pelo menos é o que parece em função do erro apresentado.
O problema pode ser na string de conexão (url), da uma olhada.

Acho que a url está correta.

Segue o meu context.xml

<?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" crossContext="true" debug="5" path="/GesDef" reloadable="true"> <Resource name="jdbc/gesdef" auth="Application" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="mysql" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/gesdef" /> </Context>

Está correta mesmo. O problema então pode estar no seu arquivo de configuração JPA.

Por acaso as propriedades do contexto que são referentes a base são case sensitive?
Meu banco se chama gesdef e o projeto GesDef.

Isso pode ter alguma influência?

[quote=cristiano.bennertz]Por acaso as propriedades do contexto que são referentes a base são case sensitive?
Meu banco se chama gesdef e o projeto GesDef.

Isso pode ter alguma influência?[/quote]

Bah… Não estou lembrado sobre isso. Mas troca, deixa exatamente igual pra ver.

Posta o seu persistence.xml.

Bom dia.

Segue o arquivo:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="gesdef" transaction-type="JTA">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <jta-data-source>java:comp/env/jdbc/gesdef</jta-data-source>
    <class>br.com.gesdef.entidades.Papel</class>
    <class>br.com.gesdef.entidades.Defeito</class>
    <class>br.com.gesdef.entidades.Setor</class>
    <class>br.com.gesdef.entidades.Usuario</class>
    <class>br.com.gesdef.entidades.Versao</class>
    <class>br.com.gesdef.entidades.CasoUso</class>
    <class>br.com.gesdef.entidades.Teste</class>
    <class>br.com.gesdef.entidades.Produto</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
    </properties>
  </persistence-unit>
</persistence>

Senão me engano a JPA já coloca por conta essa parte: "comp/env/"
Mas não tenho certeza sobre o: "java:"
Então tenta assim:

<jta-data-source>java:jdbc/gesdef</jta-data-source>
// ou
<jta-data-source>java:gesdef</jta-data-source>
//ou ainda
<jta-data-source>jdbc/gesdef</jta-data-source>

Boa noite.

Tentei das três formas e nenhuma resolveu o problema.
Me parece que o problema é no JPA.
Fiz JSP simples apenas para listar os dados de uma das tabelas do banco e o resultado apareceu.

Estou alterando o projeto para utilizar o Hibernate agora. Talvez funcione melhor.

cara, eu uso o Hibernate, e poucas vezes me encomodei!!!

tente implementá-lo, se tiver dificuldades posta!!!

flw

Bem, o post é meio antigo, mas vale para futuras buscas.
O Tomcat 7 estava com um bug ao fazer buscas JNDI (https://issues.apache.org/bugzilla/show_bug.cgi?id=52830), que foi corrigido no Tomcat 7.0.27. No meu caso, o problema acontecia exatamente no Hibernate 4. Então fica a dica!

poh valeu mesmo … acabei de atualizar pro hibernate 4 e realmente o problema era no Tomcat … eu estava usando o 7.022 … e quando mudei pro 7.028 funcionou … valeu