OSGI Bundle使用DataNucleus 4.0.0 Release实现JPA

时间:2014-09-22 12:20:07

标签: jpa osgi classnotfoundexception datanucleus apache-servicemix

我正在尝试在OSGI环境(Apache ServiceMix)中使用DataNucleus实现JPA。我按照这里提到的指南 - http://www.datanucleus.org/products/datanucleus/jpa/osgi.html(名称“JPA和OSGi”下的部分) 根据这里的文档,我使用的是DataNucleus JPA jar。所以我在ServiceMix上部署了这个Jar,如下所示 -

osgi:安装mvn:org.datanucleus / datanucleus-jpa / 2.1.7

osgi:启动bundleId

当这个jar导出持久性提供程序时,我已经正确地将persistence.xml文件中的提供程序更改为org.datanucleus.jpa.PersistenceProviderImpl(由上面的bundle导出)而不是通常的org.datanucleus.api。 jpa.PersistenceProviderImpl,它位于普通的J2EE JPA APP中。

我还在我的ServiceMix上运行DataNucleus Core Bundle,它使用以下命令安装在我的ServiceMix上 -

osgi:安装mvn:org.datanucleus / datanucleus-core / 4.0.0-release

osgi:启动bundleId

请注意:我没有在我的ServiceMix上运行datanucleus-api-jpa包,根据文档,datanucleus-jpa包将导出必要的类,因此不需要datanucleus-api-jpa包。

在运行时,我收到以下错误:java.lang.ClassNotFoundException:org.datanucleus.jpa找不到org.datanucleus.PersistenceConfiguration [261]

我注意到DataNucleus Core版本4.0.0版本没有此类,但此类存在于所有先前版本(3.2.15)中。

我无法将DataNucleus核心版本3.2.XX部署到我的ServiceMix上,因为我有其他捆绑使用DataNucleus Core 4.0.0版本,并且由于Singleton Creation问题而导致两者都不是一个选项。

请告诉我,如果您需要我发布我的代码,我会这样做。 请帮忙

干杯, 阿比吉特

1 个答案:

答案 0 :(得分:0)

总之,您使用的是不正确/无效的罐子。在datNucleus的v2中删除了“datanucleus-jpa”。所有最新版本使用“datanucleus-api-jpa”(或“datanucleus-api-jdo”,如果使用JDO)。只需简单下载4.0.x的DataNucleus zip文件即可。