2014-08-27 6 views
0

Je suis nouveau à JPA. J'utilise maven, eclipselink 2.0 et jpa 2.0. J'ai créé les entités en utilisant une connexion à une base de données. Voici mon persistence.xmlErreur d'authentification avec JPA 2.0 et EclipseLink 2.0

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.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_2_0.xsd"> 
    <persistence-unit name="certifications" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>jdbc/com/ni/ds_edata_soa_nontx</jta-data-source> 
     <class>com.ni.apps.engineering.certification.entities.NicdsCliCertificationStg</class> 
     <class>com.ni.apps.engineering.certification.entities.NicdsCliCertificationStgPK</class> 
     <class>com.ni.apps.engineering.certification.entities.NicdsCliUpMapping</class> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes>   
     <properties>       
      <property name="javax.persistence.jdbc.password" value="soa_user"/> 
      <property name="javax.persistence.jdbc.user" value="soa_user"/> 
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/> 
      <property name="eclipselink.logging.level.sql" value="FINE"/>   
     </properties>  
    </persistence-unit> 
</persistence> 

Ceci est l'erreur que j'obtiens en essayant de lancer l'application.

detailMessage « Exception [EclipseLink-4002] (Eclipse persistance Services - 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.DatabaseException \ r \ nInternal Exception: java.sql.SQLException: java.sql .SQLException: Utilisateur: NI, n'a pas pu être authentifié. \ R \ nError Code: 0 "(id = 114)

Comme vous pouvez le voir, il n'y a rien appelé" NI "dans ma persistance. La seule chose qui s'appelle NI est le schéma à partir duquel je tire les tables pour créer les entités. La source de données JTA est une copie exacte de ce qui se trouve dans mon weblogic.

Des idées?

--EDIT-- Voilà comment je reçois le EntityManager

private EntityManagerFactory emf; 

    protected EntityManager getEntityManager(){ 
     if(emf == null){ 
      emf = Persistence.createEntityManagerFactory("certifications"); 
     } 
     return emf.createEntityManager(); //This is where it fails 
    } 

Répondre

0

Vous utilisez le serveur d'applications fourni JTA DataSource, donc EclipseLink est déjà initialisé se EntityManager. Je pense que vous n'avez pas besoin d'autres propriétés, car de cette manière EclipseLink crée une connexion de DataSource comme

ds.getConnection(username, password); 

au lieu que

ds.getConnection(); 

S'il vous plaît essayer de supprimer des propriétés, javax. persistence.jdbc.user et javax.persistence.jdbc.driver et ee si cela fonctionne pour vous. EDIT: vous utilisez EclipseLink configuré pour être utilisé à partir du serveur d'applications (dans votre cas, WebLogic) car vous avez utilisé la recherche JTA DataSource et JNDI pour obtenir la connexion DataSource à partir du serveur d'applications. Mais vous utilisez EclipseLink d'une manière qui est destinée à être utilisée dans des environnements non Java EE tels que les clients JavaSE autonomes (voir here).

Si vous avez besoin d'EntityManager quelque part, laissez WebLogic procéder à l'initialisation, par ex. dans Servlet, il ressemblerait à ceci:

@WebServlet(urlPatterns = { "/Test" }) 
public class TestServlet { 
    @PersistenceContext(unitName = "certifications") 
    private EntityManager entityManager; 
} 
+0

Essayé, mais n'a pas fonctionné. J'ai ajouté un peu plus d'informations. Merci! – Nacho321

+0

Pouvez-vous vérifier à partir de la console WebLogic que la connexion DataSource fonctionne correctement? Il se peut que vous utilisiez l'utilisateur 'NI' dans la configuration de WebLogic DataSource et que son nom d'utilisateur ou son mot de passe soit incorrectement défini dans WebLogic. –

+0

Non, la source de données weblogic a un combo utilisateur/mot de passe complètement différent. C'est pareil que ceux que j'avais sur ma persistance.xml – Nacho321

Questions connexes