2012-07-25 3 views
1

응용 프로그램을 만들어 Karaf에 배포해야합니다. 하지만 낙타 컴포넌트와 Java 컴포넌트 (단순 스프링 빈)를 사용해야합니다. 흐름은 다음과 같아야합니다.Apache Karaf OSGi 응용 구조

WebService(not matter for me) -> camel-component -> spring-bean -> camel-component -> WebService(not matter for me). 

이것은 간단한 라우팅입니다. 하지만 필요한 것은 karaf가 수용하고 배포하는 OSGi 번들의 디렉토리 구조입니다.

e.x. 내가 받는다는 모든 포장하고

su-camel 
    -src 
    -main 
     -resources 
     -META-INF 
      xbean.xml (spring-bean) 
    -test 
     -java 
     -resources 

su-bean 
    -src 
    -main 
     -java 
     -resources 
     -META-INF 
      xbean.xml (spring-bean) 
    -test 
     -java 
     -resources 

, 그래서 어떤 디렉토리 구조 나는 OSGi 번들에서 응용 프로그램이 제대로 배포 할 .jar 파일을 유지해야한다 : 나는이? 보시다시피, su-camel 모듈에는 두 개의 src 디렉토리가 있으며, 모듈에는 su-bean 모듈이 있습니다.

나는 servicemix가 위에서 설명한 구조로 추가 된 모든 구성 요소를 가진 .zip 파일을 허용한다는 것을 알고 있습니다. 카라프는 그런 구조를지지합니까?

답변

2

적절한 OSGi 솔루션은 각 프로젝트마다 하나씩 두 개의 번들을 작성하고 둘 다 배포하는 것입니다. 이 작업을 원하지 않으면 프로젝트의 매니페스트에있는 Embed-Dependency 속성을 사용하여 종속성 (낙타) 패키지를 포함시킬 수 있습니다. 이렇게하면 배포 할 번들이 하나만 생성됩니다.

3

가장 간단한 해결책은 콩과 낙타 경로로 단 하나의 묶음을 만드는 것입니다. 일반적으로 빈에서 경로를 분할 할 필요가 없습니다. 당신이 어떤 이유로 그것을 나눌 필요가있는 경우에 단순히 2 개의 뭉치를 사용하십시오.

배포를 쉽게하기 위해 karaf 기능 파일을 사용할 수 있습니다.이 파일에서는 번들 둘 다를 나열하고 결국 종속성을 추가로 나열합니다. Karaf는 여러 번들을 포함 할 수있는 .kar 파일도 지원합니다. kar 파일은 당신이 karaf 서버가 maven repo에 접근 할 수 없다면 갈 수있는 방법입니다.

관련 문제