Web applications 在web应用程序中放置JPA persistence.xml的位置

Web applications 在web应用程序中放置JPA persistence.xml的位置,web-applications,jpa,configuration,web-deployment,Web Applications,Jpa,Configuration,Web Deployment,我在J2EE编程中锻炼了自己:我修改了Oracle J2EE教程e的源文件,将JPA代码放入其中,并在GlassFish中部署 使用现有的ANT配置,我可以正确编译和部署,但在运行时系统找不到persistence.xml 这是已部署文件的结构。为了避免这个问题,我将相同的xml文件放在了更多的地方,但没有成功 在server.log中,我发现 原因:javax.persistence.PersistenceException:无持久性 EntityManager命名测试的提供程序 Glassf

我在J2EE编程中锻炼了自己:我修改了Oracle J2EE教程e的源文件,将JPA代码放入其中,并在GlassFish中部署

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

这是已部署文件的结构。为了避免这个问题,我将相同的xml文件放在了更多的地方,但没有成功

在server.log中,我发现

原因:javax.persistence.PersistenceException:无持久性 EntityManager命名测试的提供程序

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>

org.hibernate.ejb.HibernatePersistence
converter2.ejb.Converter2Bean
实体.秩序
我提出:

  • hibernate-testing.jar
  • hibernate3.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
在目录\glassfish3\glassfish\lib\db中,我重新启动了glassfish。
我错在哪里?

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

应用程序是一个EAR,而不是一个WARI放入库:Hibernate、antlr、commons collections、dom4j、,已部署应用程序的WEB-INF/hibernate中的javassist、jta e slf4j api但问题仍然存在您是否尝试了我在回答中提出的建议?*WEB-INF/hibernate不在应用程序服务器类路径中,因此它不是一个解决方案。我尝试过:在我将库放入glassfish3\glassfish\domains\domain1\lib\ext之前,但我仍然收到**javax.persistence.PersistenceException:EntityManager没有持久性提供程序**您确定类是org.hibernate.ejb.HibernatePersistence吗在你提到的一个jar中,我用google搜索过,它似乎包含在hibernate-entitymanager.jar中