2014-11-05 13 views
0

문제점과 관련된 예제가 있습니다. (공동 파일 : https://drive.google.com/file/d/0B8ThLrV6-uchaFlTZTNGQ1FnT1E/view?usp=sharing를)iPOJO와 컴포넌트 간 연결

내가 3 개 ipojo 구성 요소 (3 bunbles)이 있습니다

  • CallHello이 HelloDelay 또는 HelloComponentReplace

  • HelloDelay 및 HelloComponentReplace의 HelloService를 사용 모두에서 구현 된 DelayService 서비스를 사용을 HelloPrint에 구현 된 서비스

    • service.hello.service.jar

    • printer.hello.printer.jar

    • delay.hello : 배치에서

    는 I 5 개 번들을 배치. 지연 .jar

  • replace.hello.replace.jar

  • call.hello.call.jar

결과 : DelayService 항상 HelloDelay의 구현을 사용합니다.

마지막으로 Main.java를 실행하여 HelloDelay와 HelloComponentReplace 사이의 수동 선택을 제어합니다.

  • Main.java에서 번들을 시작/중지하거나 제거/설치하는 기능을 구현했습니다 (제대로 작동합니다). 그러나 HelloDelay 또는 HelloComponentReplace가 유효합니다.

  • 두 경우 모두 활성화되어 있고 유효합니다. iPOJO 웹 사이트에서 읽었으며 "비교 자"를 사용할 수 있습니다. 하지만 위의 두 구성 요소 사이에서 선택을 제어하는 ​​데 '비교 자'를 적용하는 방법을 이해하지 못합니다. 이것이 우선 순위를 변경합니까? 우리는 번들의 우선 순위를 바꿀 수 있다는 것을 알고 있지만 내 파일 (Main.java)과 iPOJO에 적용하는 방법을 알 수 없다.

  • 필수 구성 요소와 많은 제공 구성 요소 (동일한 서비스 또는 인터페이스) 간의 연결 (바인딩)을 제어 할 수 있습니까?

이번에는 도움이 되었기를 바랍니다.

안부,

답변

0

사용 인터셉터 서비스 바인딩을 조작 할 수 있습니다 : 인터셉터와 http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html

당신이 서비스를 숨길 수 및/또는 사용하려는 공급자를 집행하기 위해 서비스 제공자를 정렬 .

+0

답장을 보내 주셔서 감사합니다. 동적 인 서비스 바인딩 조작을 제어하는 ​​독립 컴포넌트로이 인터셉터를 구현할 수 있습니까? 웹 https : // github에서 귀하의 링크와 예제를 읽었습니다.co.kr/apache/felix 나는 인터셉터가 기존 번들 (번들 서비스를 요구하는 변경)에 어떻게 영향을 미칠 수 있는지 이해하지 못합니다. 감사합니다. – HNT

+0

인터셉터는 개별 구성 요소이므로 응용 프로그램과 별도로 개발하여 배포 할 수 있습니다. 'target'속성을 사용하여 '서비스 의존성'을 대상으로합니다. 이 속성은 처리 할 종속성을 선택하는 LDAP 필터입니다. 예를 들어 : (dependency.id = foo)는 id가 foo 인 종속성을 선택하고, (dependency.specification = org.acme.Foo)는 org.acme.Foo 서비스 인터페이스가 필요한 모든 종속성을 선택합니다. – Clement