将JPA persistence.xml放在Web应用程序中

时间:2013-02-05 11:38:21

标签: web-applications jpa configuration web-deployment

我在J2EE编程中练习自己:我修改了Oracle J2EE教程converter's exampl e的源文件,将JPA代码放入其中并在GlassFish中部署。

使用现有的ANT配置,我正确编译和部署,但在运行时系统找不到 persistence.xml

这是已部署文件enter image description here的结构。我把相同的文件xml放在更多地方以避开问题,但没有成功。

server.log 中,我找到了

  

引起:javax.persistence.PersistenceException:没有持久性   EntityManager的提供程序名为test

Glassfish支持JPA(我没有收到NoDefClassError的ClassnotFoundException,我没有任何类路径问题),持久性的id是唯一的,导致异常的指令是

Persistence.createEntityManagerFactory("test")

这是我的 persistence.xml 配置

<?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="test" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>converter2.ejb.Converter2Bean</class>
    <class>entity.Order</class>
    <properties>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/JPA"/>
      <property name="hibernate.connection.user" value="root"/>
      <property name="hibernate.connection.driver" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.connection.password" value="my_password"/>
      <property name="default-schema" value="JPA"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
      <property name="hibernate.hbm2ddl.import_files" value="C:\\mysql\\crea.sql"/>
    </properties>
  </persistence-unit>
</persistence>

我把:

  • hibernate-testing.jar
  • hibernate.jar文件
  • 冬眠-JPA-2.0-API-1.0.1.Final.jar

在目录 \ glassfish3 \ glassfish \ lib \ db 中,我重新启动了Glassfish。 我哪里错了?

1 个答案:

答案 0 :(得分:0)

问题源于Glassfish无法找到Hibernate类,将它们放在域文件夹下的 lib / ext 文件夹中(例如: / glassfish3 / glassfish / domain / yourdomain / lib / ext )并重启Glassfish。