2013-06-21 4 views
0

J'ai un simple module EJB Maven utilisant JPA. Ceci est mon fichier persistance.xmlModule EJB Maven utilisant JPA

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> 
    <persistence-unit name="Persistence"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <mapping-file>GroupTypes.xml</mapping-file> 
     <properties> 
      <property name="hibernate.connection.url" value="jdbc:oracle:thin:@127.0.0.1:1521:E"/> 
      <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/> 
      <property name="hibernate.connection.username" value="username"/> 
      <property name="hibernate.connection.password" value="password"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

J'utilise EJB Stateless Bean et je suis en train d'obtenir tous les attributs de la table GroupTypes. Ceci est ma mise en œuvre du haricot:

public class TestBean 
{ 

    private GroupTypes GroupTypes; 
    private EntityManagerFactory entityManagerFactory; 
    private EntityManager entityManager; 

    @WebMethod (operationName = "justTesting") 
    public boolean justTesting(@WebParam (name = "param") String value) 
    { 
     try 
     { 
      entityManagerFactory = Persistence.createEntityManagerFactory("Persistance"); 
      entityManager = entityManagerFactory.createEntityManager(); 
      Query query = entityManager.createQuery("Select name from GroupTypes"); 
      List<AmmEdGroupTypes> result = query.getResultList(); 
      return true; 

     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
      return false; 
     } 
    } 
} 

Lorsque je tente d'invoquer cette méthode je reçois exeption: javax.persistence.PersistenceException: Aucun fournisseur de persistance pour EntityManager nommé Persistance. Mon fichier persistance.xml est placé dans le dossier resources/META-INF/persistance.xml, et si je n'utilise pas bean cette solution fonctionne. Quelqu'un a-t-il une idée de la raison pour laquelle cela se produit uniquement dans le cas où j'utilise un haricot? J'utilise Intellij 12.1.1, Oracle 11g, le serveur Glassfish 3.1 et JAVA 1.6.

Répondre

0

Je résolu ce problème de la manière suivante: 1. Installé Mise en veille prolongée add-on sur GlassFish (en utilisant l'outil de mise à jour GlassFish) 2. pool de connexion GlassFish JDB ajouté AmmPool propriétés: className, nom d'utilisateur, mot de passe, databaseName et url 3. jdbc GlassFish ajouté des ressources jdbc/ _amm lier avec pool de connexion _AmmPool 4. changé fichier persistence.xml 5. pom.xml fichier a été modifié 6. Copié les bibliothèques suivantes dans les domaines GlassFish/domain1/lib : -antlr-2.7.7 -commons-collections-3.2.1, -dom4j-1.6.1, -ejb3-persistence-1.0.2.GA, -hibernate3-maven-plugin-3.0, -hibernate-commons-annotations-4.0.2.Final, -hibernate-core-4.2.2.Final, - hibernate-entitymanager-4.2.2.Final, -javassist-3.15.0-GA, -jta-1.1, -log4j-1.2.17, -oracle-jdbc-11.1.0.6.0-production +,
-slf4j-api-1.6.1 -slf4j-log4j12-1.7.5

A a également copié ces banques dans glassfish/lib-floder.

Ceci est mon nouveau fichier persistance.xml: http://pastebin.com/xbEU9Tr0 Et voici mon fichier pom.xml: http://pastebin.com/uEjhW36thttp://pastebin.com/xbEU9Tr0