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