0

我在J2EE编程中锻炼自己:我修改了Oracle的J2EE教程转换器示例的源文件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>

我把:

  • 休眠测试.jar
  • hibernate3.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar

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

4

1 回答 1

0

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

于 2013-02-05T13:39:19.113 回答