使用JPA的EJB Maven模块

时间:2013-06-21 09:47:07

标签: maven jpa intellij-idea glassfish-3 ejb-3.1

我使用JPA的简单maven EJB模块。这是我的persistance.xml文件

<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>

我正在使用EJB Stateless Bean,我正在尝试从GroupTypes表中获取所有属性。这是我的bean实现:

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;
       }
    }
}

当我尝试调用此方法时,我得到了exeption:javax.persistence.PersistenceException:没有名为Persistance的EntityManager的持久性提供程序。 我的persistance.xml文件放在文件夹resources / META-INF / persistance.xml中,如果我不使用bean,这个解决方案可以工作。有没有人知道为什么只有在我使用bean的情况下才会发生这种情况?

我使用的是Intellij 12.1.1,Oracle 11g,Glassfish 3.1服务器和JAVA 1.6。

1 个答案:

答案 0 :(得分:0)

我通过以下方式解决了这个问题:

  1. 在glassfish上安装了hibernate附加组件(使用glassfish更新工具)
  2. 在glassfish上添加了jdb连接池_AmmPool,其属性为:className, username,password,databaseName and url
  3. 在glassfish上添加了与连接池jdbc/__amm
  4. 绑定的jdbc资源_AmmPool
  5. 更改了persistence.xml档案
  6. 更改了pom.xml档案
  7. 将以下库复制到glassfish domains / 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
  8. A还将这些库复制到glassfish / lib floder中。

    这是我新的persistance.xml文件:http://pastebin.com/xbEU9Tr0

    这是我的pom.xml文件:http://pastebin.com/uEjhW36