2017-11-15 15 views
0

콩 delcaration, 난 달성하기 위해 노력하고있어 다음은 OSGI 번들 내가 OSGI 청사진 정의에 새로 온 문제

번들 1 :의 (a Bean2 주입을 가지고) bean1을을 포함 모든 blueprint1

선언

번들 2 : 그것은 blueprint2 년대, 나는 (Bean2를 선언하지 않고) bean1을을 사용하고자하는

결과 : 2가 실패 번들 : 콩에 의존 누락 2는 Bundle 2가 Bean2를 추가하지 않기 때문에 의미가 있지만,이 번들에서 보이게하고 싶지 않습니다. Blueprint1에 포함 된 복잡한 구성을 가지고 있습니다. (그리고 Blueprint2에서 모든 것을 재 복사하고 싶지 않습니다.) 나는 Bundle1에서 그것을 만들고 Bundle2에서 사용하는 기대했다

질문 : 이 번들 2 (bean1을에서 이러한 종류의 액세스를 얻을 수있는 방법이 다른 번들 사용하는 서비스와 같이 있어야하는데 거기)? 아니면 다른 방법이 있습니까?

도움 주셔서 감사합니다.

요청으로, 내 청사진 아래 :

청사진 1 :

`

<?xml version="1.0"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" ... > 
    <bean id="bean1" class="Bean1" /> 
    <bean id="bean2" class="Bean2" /> 
</blueprint> 

`

청사진 2 :

`

<?xml version="1.0"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" ... > 
    <bean id="bean1" class="Bean1" /> 
</blueprint> 

`

콩 1 :

public class Bean1 { 

    @BeanInject("bean2") 
    Bean2 bean2; 

    .... 

} 

청사진이 내 솔루션 아래

+0

그것은 당신이 뭘 하려는지 전혀 분명하지 않다. 당신은 Bundle2가 의존성 Bean2가 없기 때문에 실패하고 있다고 말한다. Bean2는 어디에 선언 되었습니까? 청사진 XML 파일을 게시 할 수 있습니까? – Kerry

답변

0

실패 :

이 청사진에

콩 선언이 항상 걸릴 것이다 로컬 번들 컨텍스트 이 Bean에서 사용되는 모든 종속성을 식별해야하므로 Bean2를 선언하지 않고도 blueprint2에서 bean1을 호출 할 방법이 없습니다.

솔루션은 서비스를 사용하고, bean1을 Blueprint1에서 서비스로 선언하고이를 Blueprint2에서 참조로 사용하므로 종속성을 정의 할 필요가 없습니다.

자세한 솔루션은 여기에 설명 : Service OSGI