Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa OSGI中的EclipseLink错误没有名为EntityManager的持久性提供程序_Jpa_Osgi_Eclipselink_Rcp - Fatal编程技术网

Jpa OSGI中的EclipseLink错误没有名为EntityManager的持久性提供程序

Jpa OSGI中的EclipseLink错误没有名为EntityManager的持久性提供程序,jpa,osgi,eclipselink,rcp,Jpa,Osgi,Eclipselink,Rcp,我有一个RCP3.7应用程序(EquinoxOSGi),使用GeminiJPA(v1.2.0)和EclipseLink(v2.5.2)。我无法在Manifest.MF中获得正确的Require Bundle组合来读取persistence.xml。是否有人拥有可以共享的工作清单.MF 我发现的所有其他问题都涉及到EclipseLink的旧版本和不在发行版中的EclipseLink.jar。我阅读了Gemini JPA的文档,但没有找到具体说明 根据其他帖子,我也有 在startLevel=3时

我有一个RCP3.7应用程序(EquinoxOSGi),使用GeminiJPA(v1.2.0)和EclipseLink(v2.5.2)。我无法在Manifest.MF中获得正确的Require Bundle组合来读取persistence.xml。是否有人拥有可以共享的工作清单.MF

我发现的所有其他问题都涉及到EclipseLink的旧版本和不在发行版中的EclipseLink.jar。我阅读了Gemini JPA的文档,但没有找到具体说明

根据其他帖子,我也有

  • 在startLevel=3时将org.eclipse.gemini.jpa添加到autoStart=true
  • 默认情况下,将带有persistence.xml的我的包添加到autoStart=true
  • 添加了VM参数-DREFRESH\u BUNDLES=false
感谢您抽出时间阅读我的问题

MANIFEST.MF

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Meta-Persistence: META-INF/persistence.xml
Bundle-Blueprint: OSGI-INF/blueprint/*.xml
Bundle-Name: Local
Bundle-SymbolicName: com.vogelware.simple.local
Bundle-Version: 0.1.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: com.vogelware.simple.model,
 com.vogelware.simple.service,
 javax.persistence;version="2.1.0",
 org.osgi.service.component;version="1.1.0"
Require-Bundle: org.eclipse.gemini.jpa;bundle-version="1.2.0",
 org.eclipse.persistence.antlr;bundle-version="3.2.0",
 org.eclipse.persistence.asm;bundle-version="3.3.1",
 org.eclipse.persistence.core;bundle-version="2.5.2",
 org.eclipse.persistence.jpa;bundle-version="2.5.2",
 org.apache.derby;bundle-version="10.8.2"
Service-Component: OSGI-INF/PersonEntityService-local.xml
Bundle-ActivationPolicy: lazy
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="person" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

        <class>com.vogelware.simple.Person</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:derby:D:\dev\projects\EASA-DB\motordb" />
        </properties>
    </persistence-unit>
</persistence> 

org.eclipse.persistence.jpa.PersistenceProvider
com.vogelware.simple.Person

他们有几个问题需要解决

  • 无数据库提供程序-将Gemini DBAccess添加到项目中
  • 加载了错误的PersistenceProviderResolver-加载的是静态内部类而不是OSGiProviderResolver。由下面的#4解决
  • DS和JPA中的循环导致多个异常-添加了VM参数-DREFRESH\u BUNDLES=false
  • 需要将捆绑包配置为autoStart=“true”startLevel=“3”
    • javax.persistence
    • org.apache.derby
    • org.eclipse.gemini.dbaccess.derby
    • org.eclipse.gemini.dbutil
    • org.eclipse.gemini.jpa
    • org.eclipse.gemini.blueprint(如果使用)

  • 我想纠正几点:

  • 没有
    org.eclipse.gemini.dbutil
    ,而是
    org.eclipse.gemini.dbaccess.util

  • EclipseGeminiJPA的最新版本是1.2.0.M1,所以
    org.Eclipse.Gemini.JPA;bundle version=“1.2.0”
    对我不起作用

  • 此MANIFEST.MF适用于我:

    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-SymbolicName: org.openhab.binding.mybinding;singleton:=true
    Bundle-Name: org.openhab.binding.mybinding
    Bundle-Version: 1.0.0.qualifier
    Bundle-RequiredExecutionEnvironment: JavaSE-1.8
    Meta-Persistence: META-INF/persistence.xml
    Import-Package: com.fasterxml.jackson.annotation,
     com.fasterxml.jackson.core,
     com.fasterxml.jackson.databind,
     javax.persistence,
     javax.servlet.http,
     javax.ws.rs.client,
     javax.ws.rs.core,
     org.eclipse.jetty.io,
     org.eclipse.jetty.server,
     org.eclipse.jetty.server.handler,
     org.eclipse.jetty.servlet,
     org.eclipse.jetty.util.component,
     org.eclipse.jetty.websocket.api,
     org.eclipse.jetty.websocket.api.annotations,
     org.eclipse.jetty.websocket.client,
     org.eclipse.jetty.websocket.common,
     org.eclipse.jetty.websocket.servlet,
     org.eclipse.paho.client.mqttv3,
     org.eclipse.paho.client.mqttv3.persist,
     org.eclipse.smarthome.config.core,
     org.eclipse.smarthome.core.library.types,
     org.eclipse.smarthome.core.thing,
     org.eclipse.smarthome.core.thing.binding,
     org.eclipse.smarthome.core.types,
     org.glassfish.hk2.osgiresourcelocator,
     org.glassfish.jersey,
     org.glassfish.jersey.client,
     org.glassfish.jersey.jackson,
     org.slf4j,
     org.testng,
     org.testng.annotations,
     com.google.common.collect
    Require-Bundle: org.eclipse.gemini.jpa,
     org.eclipse.persistence.antlr;bundle-version="3.2.0",
     org.eclipse.persistence.asm;bundle-version="3.3.1",
     org.eclipse.persistence.core;bundle-version="2.5.2",
     org.eclipse.persistence.jpa;bundle-version="2.5.2",
     org.apache.derby;bundle-version="10.8.2"
    Service-Component: OSGI-INF/*.xml
    
    这是my persistence.xml:

    
    org.eclipse.persistence.jpa.PersistenceProvider
    com.gadgetkeeper.hub.supervisor.model.ActivationInfo
    com.gadgetkeeper.hub.supervisor.model.SupervisorState
    com.gadgetkeeper.hub.supervisor.model.Version
    

        <persistence-unit name="supervisor-state" transaction-type="RESOURCE_LOCAL">
            <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    
            <class>com.gadgetkeeper.hub.supervisor.model.ActivationInfo</class>
            <class>com.gadgetkeeper.hub.supervisor.model.SupervisorState</class>
            <class>com.gadgetkeeper.hub.supervisor.model.Version</class>
    
            <properties>
                <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
                <property name="javax.persistence.jdbc.url"
                          value="jdbc:derby:db/supervisordb;create=true"/>
                <property name="javax.persistence.jdbc.user" value="supervisor"/>
                <property name="javax.persistence.jdbc.password" value="supervisor"/>
    
                <!-- EclipseLink should create the database schema automatically -->
                <property name="eclipselink.ddl-generation" value="create-tables"/>
                <property name="eclipselink.ddl-generation.output-mode"
                          value="database"/>
            </properties>
        </persistence-unit>