我想用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。
答案 0 :(得分:5)
如果您使用的是Karaf,最好使用适用于Karaf的Aries jpa功能,这样可以在OSGi环境中提供良好的JPA集成。它避免了许多类加载问题,并允许您利用其他容器服务,如事务管理,如果您需要它们。您仍然可以使用OpenJPA作为JPA提供程序。例如,请参阅此tutorial on JaxEnter或these slides which explain why JPA on its own has issues。
答案 1 :(得分:1)
你可以像Holly推荐的那样看看我的tutorial for JPA on OSGi using Apache Aries。