2009-12-03 8 views
6

J'ai une définition de persistance de travail qui fonctionne sur les tests de niveau Java. Maintenant, je veux incorporer cela dans une application web qui définit la connexion à la base de données comme JNDI dans le context.xml. Qu'est-ce que j'ai besoin de changer pour le faire fonctionner avec le JNDI au lieu du persistence.xml ou au moins obtenir l'infor à partir de là?Comment configurer JPA pour utiliser JNDI?

+0

Avez-vous réussi à le faire? – test30

+1

Oui mais ma réponse avec les détails a été effacée sans raison valable. Il revient à utiliser les sources de données JTA. Voir http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/configuration.html. – javydreamercsw

Répondre

1

Votre persistence.xml début devrait être quelque chose comme ça (en utilisant EclipseLink comme la mise en œuvre), pour une jdbc/MYNAME Nom JNDI:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> 
    <persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL">  
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <non-jta-data-source>java:comp/env/jdbc/MYNAME</non-jta-data-source> 
    <class>org.test.entity.MyEntity</class> 
... 
    </persistence-unit> 
<persistence> 

Bien sûr, vous devez définir la configuration appropriée pour votre environnement. Dans l'exemple j'utilise un non-JTA DataSource: selon un de vos commentaires, il semble que votre DataSource n'est pas compatible JTA. Pour Hibernate, le fournisseur de persistance doit être différent.

0

Vous devez utiliser le fichier persistence.xml lorsque vous utilisez JPA. car JPA doit vérifier le fichier persistence.xml. donc vous pouvez utiliser persistence.xml et jndi en même temps.

Questions connexes