我在使用EclipseLink时遇到了一些问题。我正在使用GlassFish v3.1,我正在尝试将EclipseLink用于我的持久层。我没有运气就遵循了Eclipse wiki上提供的所有教程。我的persistence.xml文件无法解析,我在尝试创建EntityManagerFactory时收到此错误:
org.eclipse.persistence.exceptions.PersistenceUnitLoadingException 异常描述:从URL处理persistence.xml时抛出异常:bundle://307.1:1 /
这是我的persistence.xml,位于/ WEB-INF / classes / META-INF /:
<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="generic">
<class>com.generic.domain.Service</class>
<properties>
<!-- Embedded MySQL Login -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306"/>
<!-- TODO: replace with connection pool -->
<property name="javax.persistence.jdbc.userid" value="root"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="eclipselink.target-database" value="MySQL"/>
<property name="eclipselink.jdbc.read-connections.min" value="1"/>
<property name="eclipselink.jdbc.write-connections.min" value="1"/>
<property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
<!-- Logging Settings -->
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.logging.thread" value="false" />
<property name="eclipselink.logging.session" value="false" />
<property name="eclipselink.logging.exceptions" value="true" />
<property name="eclipselink.logging.timestamp" value="false"/>
</properties>
</persistence-unit>
</persistence>
我将此行添加到我的MANIFEST.MF:
JPA-PersistenceUnits: generic
答案 0 :(得分:1)
我现在可以确认它是EclipseLink中的一个错误。解决问题的方法是使用JNDI查找或@PersistenceUnit来获取EntityManagerFactory,而不是使用Persistence.createEntityManagerFactory()。
答案 1 :(得分:0)
1)看起来你正试图从你的WAB使用OSGi / JPA。正确? 2)您能告诉您是否在系统中安装了任何新的eclipselink捆绑包吗?如果是这样,他们是什么? 3)你能提供堆栈跟踪吗?