我正在尝试在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问题而导致两者都不是一个选项。
请告诉我,如果您需要我发布我的代码,我会这样做。 请帮忙
干杯, 阿比吉特
答案 0 :(得分:0)
总之,您使用的是不正确/无效的罐子。在datNucleus的v2中删除了“datanucleus-jpa”。所有最新版本使用“datanucleus-api-jpa”(或“datanucleus-api-jdo”,如果使用JDO)。只需简单下载4.0.x的DataNucleus zip文件即可。