gpt4 book ai didi

java - 如何使用 EclipseLink 使 PostgreSQL 与 OSGi 一起工作

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:17 24 4
gpt4 key购买 nike

我需要使用 EclipseLink 开发一个 OSGi 包,它应该连接到 PostgreSQL,但我浪费了很多时间而且无法让它工作。我收到此“javax.persistence.PersistenceException:EntityManager 命名房间没有持久性提供程序”。

基本上,我按照我在网上找到的教程的步骤进行操作。我使用 Eclipse Indigo

Manifest file : 
Manifest-Version: 1.0
Meta-Persistence: persistence.xml
JPA-PersistenceUnits: rooms
Bundle-ClassPath: ., META-INF/persistence.xml
Bundle-ManifestVersion: 2
Bundle-Name: PMSTestTask
Bundle-SymbolicName: PMSTestTask
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: pmstesttask.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: javax.persistence;version="2.0.3", org.osgi.framework;version="1.3.0", org.postgresql
Require-Bundle: org.eclipse.persistence.jpa;bundle-version="2.1.0", org.eclipse.persistence.jpa.osgi;bundle-version="2.3.0"

持久性.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<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_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">

<persistence-unit name="rooms" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>test_task.domain.Room</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/Hotel_test_task" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />

</properties>
</persistence-unit>
</persistence>

激活器.java

 EntityManagerFactory emf = Persistence
.createEntityManagerFactory("rooms");
EntityManager em = emf.createEntityManager();

更新。 0

添加了 required-bundle list 。得到了这个

org.osgi.framework.BundleException: The bundle "org.eclipse.persistence.jpa.osgi_2.3.0.v20110604-r9504 [26]" could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.persistence.core; bundle-version="2.3.0"

最佳答案

由于您是自己实例化 EMF(而不是使用例如 Enterprise OSGi 来注入(inject) EMF),因此您必须将 EclipseLink 类添加到包的类路径中,否则 Java 无法实例化指定的 <provider>类,这可能会导致此错误消息。

参见 LazyLoadingRCP例如,特别是 org.eclipse.persistence.example.jpa.rcp.comics 的类加载器注释束,或混凝土 MANIFEST.MF该包的一部分(EclipseLink 类包含在 Require-Bundle 中)。

关于java - 如何使用 EclipseLink 使 PostgreSQL 与 OSGi 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9251055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com