2010-11-23 141 views
4

我已阅读了很多关于我的问题的stackoverflow的其他问题,但我没有找到合适的解决方案。在OSGI应用程序中提供EntityManager的最佳实践

我开发一个OSGI应用程序(Equinox)并使用JPA(EclipseLink)。现在我要求在需要它的捆绑包中获得EntityManager的最佳方式。当我将EntityManagerFactory作为服务发布并使用它来获取EntityManger时,我必须在每个使用EntityManager的包中提供persistence.xml。当我编写一个共享一个EntityManger实例的可用性类并将其作为服务发布时,我恐怕会遇到线程同步问题。

在使用OSGI和JPA时,是否有任何一种最佳实践来提供EntityManager?

感谢

回答

1

在的EclipseLink内的OSGi使用时必须声明,其中捆绑的persistence.xml可以通过增加找到“JPA-PersistenceUnits:myPersistenceUnit”到bundle的MANIFEST.MF在persistence.xml中的位置。 EclipseLink将搜索此声明并使用此包的类加载器来获取persistence.xml。然后,您可以将EntityManagerFactory作为服务发布,并且不需要在使用该服务的每个包中共享persistence.xml。但我认为这只适用于EclipseLink。

0

我以前this blog获得与OpenJPA的和单独的样板束设置为无每个客户端包寂寂的persistence.xml。由于EclipseLink是一个JPA提供程序,它应该大致相同的设置。请务必查看博客底部链接的example code

相关问题