【问题标题】:EclipseLink into OSGI Bundle persistence.xml not found找不到 EclipseLink 到 OSGI Bundle persistence.xml
【发布时间】:2011-06-18 15:15:18
【问题描述】:

我在使用 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

【问题讨论】:

    标签: java osgi eclipselink persistence.xml


    【解决方案1】:

    我现在可以确认这是 EclipseLink 中的一个错误。解决您的问题的方法是使用 JNDI 查找或 @PersistenceUnit 获取 EntityManagerFactory,而不是执行 Persistence.createEntityManagerFactory()。

    【讨论】:

    • 感谢您的反馈,我仍然有一个问题,当我使用@PersistenceUnit 时,EntityManager 不会在我需要的时候注入到我的 servlet 中,但只有一次才能抓住它。我正在使用 RESTFul 服务的 Jersey 实现。感谢您的帮助。
    【解决方案2】:

    1) 看起来您正在尝试使用 WAB 中的 OSGi/JPA。正确的? 2) 你能告诉你是否在你的系统中安装了任何新的 eclipselink 包吗?如果是这样,它们是什么? 3) 你能提供堆栈跟踪吗?

    【讨论】:

    • 1) true 2) 我正在使用 GlassFish v3.1 中提供的 EclipseLink 包 3) 堆栈跟踪:dinoz.mobi/stack.txt
    • 1.你能说出你的WAB的结构吗? 2. 能告诉WAB的Bundle-ClassPath吗?
    • - META-INF/MANIFEST.MF - WEB-INF/web.xml - WEB-INF/classes/com/... - WEB-INF/classes/META-INF/persistence.xml - src/main/test/java Bundle-ClassPath: WEB-INF/classes 我可以在WAB的WEB-INF/classes/META-INF/下找到persistence.xml。感谢您的帮助。
    • 我已经能够使用一个简单的测试用例重现这个问题。它似乎是 glassfish 的 eclipselink 组件中的一个错误(很可能)。您介意在实体持久性子类别下针对 GlassFish 创建一个错误吗?
    猜你喜欢
    • 2015-07-20
    • 2013-01-08
    • 2013-10-12
    • 2015-09-10
    • 2011-05-24
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多