2016-06-30 8 views
2

Karaf 4.0.3아파치 Karaf는 기능이 필수

나는 다음과 같은 유사 기능이 있습니다

<features name="my-feature" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0"> 
<feature name="C" version="${project.version}" start-level="25" install="auto"> 
    <bundle start-level="25">...BundleC1...</bundle> 
</feature> 

<feature name="A" version="${project.version}" start-level="30" install="auto"> 
    <feature prerequisite="true">C</feature> 
    <bundle start-level="30">...BundleA1...</bundle> 
</feature> 

<feature name="B" version="${project.version}" start-level="35" install="auto"> 
    <feature prerequisite="true">C</feature> 
    <bundle start-level="35">...BundleB1...</bundle> 
</feature> 

C가
A가
B는 C

에 따라 C에 따라 독립적입니다

이 예제에서 'BundleB1'번들은 'BundleC1'의 잘못된 주 버전을 가져오고 '누락'메시지가 표시됩니다 요구 사항 "오류 (예상대로). 그러나 karaf 콘솔에 로그인하여 'feature : list'를 실행하면 C가 시작됨, A가 제거됨, B가 제거됨을 알 수 있습니다. 내가 별도의 이러한 세 가지 각 기능을 넣으면

은 내가 전체 C 기능을 주석 경우에만 잘 시작됩니다 C. A와 종속성을 가지고 있기 때문에 A가 시작되는 아니면 나중에 feature:install A

을 실행하면 예상 feature.xml 파일 C + A가 Started로, B가 Uninstalled로 예상되는 결과를 얻습니다.

내가 뭘 잘못하고 있니?

전제 조건 속성이 어떻게 작동하는지 오해하니? sidenote로서, 전제 조건 속성을 모두 건너 뛴다면 아무 기능도 설치되지 않을 것입니다 ...

답변

3

이것은 Karaf 4에서 예상되는 동작입니다. Karaf는 설치할 모든 기능이있는 하나의 하위 시스템을 만듭니다. 이 하위 시스템은 한 번에 해결됩니다. 성공했거나 실패합니다.

속성은 Karaf에게 독립 서브 시스템에이 기능을 설치하도록 지시합니다. 귀하의 경우에는

:

  • C를 설치/시작;
  • A + B가 해결되지만 시작과 B 제거 할/실패 별도의 기능으로 각 하위 기능을 추출하는 것입니다/설치 될
좋아
+0

, 그래서 C + A를 얻을 수있는 유일한 방법 실패 .xml 파일? 그런 식으로 자신의 컨텍스트/프로세스에 설치됩니까? – stromvap

+0

기능을 설치하는 방법에 따라 다릅니다. deploy 폴더를 사용한다면, 예, org.apache.karaf.features.cfg 파일을 사용하여 다른 파일로 분할해야합니다. 그러면 설치할 기능을 지정할 수 있고 괄호로 그룹을 생성 할 수 있습니다 (C), (A), (B) –

+2

'org.apache.karaf.features.cfg'와 'groups'을 사용하는 방법을 자세히 설명해 주시겠습니까? 카라프 문서가 부족하고 관련 예제를 찾기가 어렵습니다. – stromvap