我想在OSGI环境(Apache ServiceMix)中使用DataNucleus实现JPA。我遵循这里提到的指南 - http://www.datanucleus.org/products/datanucleus/jpa/osgi.html(在“JPA和OSGi”的名称下的部分) 根据这里的文档,我使用DataNucleus JPA jar。安装MVN:org.datanucleus/DataNucleus将-JPA/2.1.7使用DataNucleus 4.0.0实现JPA的OSGI包版本
的OSGi:启动bundleId
由于这个罐子出口持久性提供
OSGi的 - 所以我如下部署在ServiceMix的这个jar ,我已经正确地将persistence.xml文件中的提供程序更改为org.datanucleus.jpa.PersistenceProviderImpl(由上述包导出),而不是通常的org.datanucleus.api.jpa.PersistenceProviderImpl,它位于正常的J2EE JPA APP。
我也有DataNucleus将核心捆绑在我的ServiceMix,这是使用以下我的ServiceMix安装在运行 -
的OSGi:安装MVN:org.datanucleus/DataNucleus将核心/ 4.0.0释放
的OSGi:启动bundleId
请注意:我DONOT有我的ServiceMix的运行DataNucleus将-API JPA束,按照该文档中,DataNucleus将-JPA捆绑将导出必要的类,因此DataNucleus将-API JPA捆绑将不是必需的。
在运行时,我得到所致以下错误:抛出java.lang.ClassNotFoundException:org.datanucleus.PersistenceConfiguration不org.datanucleus.jpa发现[261]
我已经注意到的是,DataNucleus将核心版本4.0.0-release没有这个类,但是这个类存在于所有以前的版本(3.2.15)中。
我无法将DataNucleus Core Version 3.2.XX部署到我的ServiceMix上,因为我有其他使用DataNucleus Core 4.0.0-release的软件包,并且由于Singleton创建问题而无法使用这两个软件包。
请让我知道,如果你需要我发布我的代码,我会这样做。 请帮助
干杯, 作者Abhijit
当你说你想使用DataNucleus v4.x时,为什么要使用“datanucleus-jpa”v2.1.x? v2.x很久没有被支持了。 – 2014-09-22 12:28:47
解决方法是加载META-INF/services/javax.persistence.spi.PersistenceProvider中的实现类,以便将持久性提供程序导出为OSGi服务。 DataNucleus JPA jar是最新版本2.1.7的版本。 – 2014-09-22 12:32:58
不,它不是“最新版本”。这是一个古老的版本。 “datanucleus-api-jpa”是当前支持的神器,如阅读文档 – 2014-09-22 12:33:53