2012-09-18 3 views
2

두 가지 구현이있는 인터페이스가 있습니다. 두 구현을 모두 OSGi 서비스로 공개하려고하지만, 그렇게 할 때 다른 것을 우선합니다. 여기인터페이스의 여러 구현을 OSGI 서비스로 노출

<bean id="formService" class="com.dbt.form.service.FormService"/> 
<bean id="formAPIService" class="com.dbt.form.service.FormAPIService"/> 
<osgi:service 
    ref="formAPIService" 
    interface="com.dbt.form.service.ifc.IFormService"/> 
<osgi:service 
    ref="formService" 
    interface="com.dbt.form.service.ifc.IFormService" /> 

formServiceformAPIService 구현에 의해 오버라이드 (override)되어 내가 뭐하는 거지 구성을 찾아주세요.

이 문제를 해결하는 방법에 대해 도움을주십시오.

답변

8

두 번째 서비스가 첫 번째 서비스를 덮어 쓰지 않습니다 ...이 두 서비스는 별도로 게시되며 OSGi Gogo 쉘에 inpect cap service 명령을 입력하여이를 확인할 수 있습니다.

소비자 코드가 사용 가능한 서비스 인스턴스 중 하나만 선택할 수 있습니다. 이 경우 소비자를 작성하여 모든 인스턴스에 바인딩하거나 순위 또는 대상 필터 조합을 사용하여 원하는 특정 서비스를 결정해야합니다. 문제가있는 곳에서 서비스를 사용하는 방법에 대한 자세한 정보를 제공해야합니다 (아마).

3

이 페이지를 읽으십시오 ... Chapter 8. The Service Registry 섹션 8.2.2.3.

당신은 콩 이름 OSGI 참조 태그의 속성을 사용할 수 있습니다. 서비스를 가져 오는 동안 bean 이름은 해당 서비스를 내보낼 때 해당 서비스의 id 속성을 나타냅니다.

관련 문제