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