2013-03-08 86 views
1

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

我试着用JPA支持的示例OSGI包,当我的客户调用持久性功能时遇到问题。该服务不能创建EntityManagerFactory。总是它是空的。

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

目前我正在eclipse中创建一个OSGI包,并将它作为一个包导出并部署到Karaf中。客户可以致电该服务。但问题是当我得到EntityManagerFactory

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

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

请给我提供一个清晰的概念,如何使用OpenJPA创建OSGI persitence包。

回答

5

如果你使用的是Karaf,你最好使用Karaf的Aries jpa特性,它在OSGi环境中提供了一个不错的JPA集成。它避免了许多类加载问题,并允许您利用其他容器服务(如事务管理),如果您需要的话。您仍然可以使用OpenJPA作为您的JPA提供程序。例如参见tutorial on JaxEnterthese slides which explain why JPA on its own has issues