如何创建JPA OSGI包

时间:2013-03-08 12:19:38

标签: osgi openjpa apache-karaf osgi-bundle

我想用JPA 2.0创建OSGI持久性服务包。我使用OpenJpa作为持久性提供程序。

我尝试了一个带有JPA支持的示例OSGI包,当我的客户端调用持久性功能时,我遇到了问题。该服务无法创建EntityManagerFactory。永远是空的。

我使用Apache Karaf作为安装服务的平台。

目前我正在eclipse中创建一个OSGI包,并将其作为捆绑包导出并将其部署在Karaf中。客户端可以调用该服务。但问题是当我得到 EntityManagerFactory 时。

我使用波纹管代码来获取EntityManagerFactory。

  OpenJPAEntityManagerFactory emf = OpenJPAPersistence.createEntityManagerFactory
    ("StudentServiceProvider","META-INF/persistence.xml");

请告诉我如何使用OpenJPA创建OSGI persitence bundle。

2 个答案:

答案 0 :(得分:5)

如果您使用的是Karaf,最好使用适用于Karaf的Aries jpa功能,这样可以在OSGi环境中提供良好的JPA集成。它避免了许多类加载问题,并允许您利用其他容器服务,如事务管理,如果您需要它们。您仍然可以使用OpenJPA作为JPA提供程序。例如,请参阅此tutorial on JaxEnterthese slides which explain why JPA on its own has issues

答案 1 :(得分:1)

你可以像Holly推荐的那样看看我的tutorial for JPA on OSGi using Apache Aries