가능한 한 많은 모듈성을 가진 OSGi 환경 (Karaf running Felix)에서 지속성을 유지하려고합니다. JPA 대신 추가 기능 (주로 그룹 가져 오기)을 위해 JDO를 선택했습니다. 구현은 Datanucleus입니다. Maven을 사용하여 전체 프로젝트를 빌드합니다.Datanucleus JDO와 청사진을 사용하는 OSGi 환경에서의 지속성
이전에 JDO 또는 OSGi에 대한 경험이 없었기 때문에 두 가지 중 하나를 작동 시키려면 상당한 어려움이있었습니다. 나는 현재 Java SE 환경에서 JDO 지속성을 수행 할 수 있으며 (유닛 테스트는 문제없이 작동 함) 청사진 컨테이너를 사용하여 OSGi 환경에서 서비스를 제공하는 방법을 알고 있습니다. 그러나 나는이 두 가지가 함께 작동하도록 할 수는 없다. 클래스 로딩 문제가 있습니다.
Karaf에서 JDO 지속성을 수행 할 수있는 간단한 애플리케이션조차 만들 수 없었습니다. (나는 this tutorial을 시도했지만 스프링 DM을 사용하고 대신 OSGi 청사진을 사용하기 위해 다시 작성할 수 없었습니다).
내가 대해 가장 혼란 스러워요 것은 :
- 어떤 가치 나는 datanucleus.primaryClassLoader 속성을 설정해야합니다에?
- JDOHelper.getPersistenceManagerFactory 메소드에 전달할 클래스 로더는 무엇입니까?
- maven-bundle-plugin을 사용하여 명시 적으로 가져올 패키지는 무엇입니까?
- 다른 번들 된 PersistenceManagerFactory에 대한 참조 외에 무엇이 필요합니까 (javax.jdo, org.datanucleus.api.jdo 및 org.osgi.framework 자 적어도 처럼해야 할 수도 있습니다 보이는)?
또한 :
- 는 값 클래스에서 지속성 정보를 분리 할 수 있습니까? 만약 내가 올바르게 이해한다면, 그것은 실행 가능하다면 매우 복잡 할 수있는 런타임 향상을 사용하는 경우에만 가능할 것입니다.
- 여러 번들에서 상호 의존성 지속 가능 클래스를 정의 할 수 있습니까? 하나의 묶음에 정의 된 사용자와 다른 묶음에있는 주소를 갖는 것과 같이?
Datanucleus, JDO API 및 OSGi 청사진을 사용하여 지속성을 관리하는 간단한 다중 번들 프로젝트의 예제에 대해 매우 감사하게 생각합니다.
는
감사합니다. 제가 확인하겠습니다. – binarek
번들을 시작할 때 모든 데이터 핵 번들을 시작해야합니다. 그렇지 않으면 OSGIPluginRegistry에서 오류 (NullPointerException)가 발생합니다. –