OSGI를 프로젝트의 플러그인 관리 수단으로 사용하는 데 관심이 있습니다. 거기에는 내 인터페이스의 많은 구현자가있을 수 있습니다. 각 구현 클래스는 자체 구현 클래스가 포함 된 별도의 OSGI 번들로 나타납니다.인터페이스의 둘 이상의 구현 자. 어떻게 OSGi와 함께?
답변
Declarative Service 가야합니다.
당신은 번들 활성화 및 비활성화되는 방법을 정의 할 수 인터페이스의 service
<service>
<provide interface="my.Interface"/>
<property name="foo" value="bar"
</service>
각 구현으로 사용자 인터페이스를 선언 할 수 있습니다.
하지만 실제로 깔끔한 것은 그 성격입니다. 최신 SCR (새롭고 향상된 OSGi R4.2 DS - Declarative Service - 사양을 구현하는 "Extender 번들"인 "Service Component Runtime")을 사용하는 경우 클래스는 OSGI 모델에서 아무 것도 가져 오지 않습니다. 그들은 순수한 POJO로 남아 있습니다. 서비스를 감지하고 첫 번째 서비스의 모든 콘크리트 인스턴스를 나열하고 의도로 처리됩니다
<reference name="myInterfaceServiceName"
interface="my.Interface"
bind="myActivationMethod" unbind="myDeactivationMethod"
cardinality="0..n"/>
그건 :
그런 다음 첫 번째 서비스에 따라 다른 서비스를 정의합니다.
자세한 내용은 Eclipse Extensions and Declarative Services 질문을 참조하십시오.
EclipseCON2009의 프레젠테이션 : Component Oriented Development in OSGi with Declarative Services, Spring Dynamic Modules and Apache iPOJO은 구체적인 예를 제공합니다.
이것은 표준 서비스 레지스트리를 통해 런타임에 상세히 또는 동적으로 선언적으로 수행 할 수 있습니다 (VonC와 유사).
구현자는 서비스로 구현을 등록하고 소비자는 레지스트리에서 가져올 수 있습니다. 이것은 꽤 기본적인 OSGi입니다. 서비스는 속성으로 등록 될 수 있으므로 소비자는 서비스를 찾을 때 구현간에 구별하기 위해 이러한 속성을 사용할 수 있습니다.
네, 저도 알 겠지만 - wht 클래스가 "설치"또는 "활성화"하지 않고 번들에서 내보내는 것처럼 메타 데이터를 읽고 싶습니다. 가능합니다. –
- 1. HDividedBox에서 한 번에 둘 이상의 분할 자 이동
- 2. nl2br 둘 이상의 개행
- 3. 둘 이상의 UIPickerView 사용
- 4. 메서드에서 둘 이상의 DataTable을 어떻게 반환합니까?
- 5. 둘 이상의 정규식에 대해 어떻게 유효성을 검사합니까?
- 6. 둘 이상의 객체 터널링
- 7. PDO INSERT - 둘 이상의
- 8. Google 차트 도구 시각화 - 한 페이지에 둘 이상의 구현
- 9. QTcpServer가 둘 이상의 주소를 검색합니다.
- 10. 둘 이상의 DataTable에 컨트롤 바인딩하기
- 11. PHP에서 둘 이상의 CPU 사용
- 12. Firefox loadURI에 둘 이상의 플래그가있는 경우
- 13. 잘못된 할당 자 구현
- 14. 둘 이상의 테이블에서 LINQ 집계
- 15. 둘 이상의 링크를 리디렉션하는 방법
- 16. drawstring에 둘 이상의 글꼴 사용
- 17. 함수에서 둘 이상의 값 반환
- 18. 어셈블리 언어 - 둘 이상의 형식?
- 19. Matlab Anfis 둘 이상의 출력?
- 20. 둘 이상의 게시물 요청 보내기
- 21. OAuth에서 둘 이상의 공급자 사용
- 22. TransformerFactory에서 둘 이상의 URIResolver가 필요합니까?
- 23. 둘 이상의 테이블에서 데이터 매핑
- 24. 둘 이상의 일치 패턴 일치
- 25. SQl 둘 이상의 테이블에서 삭제
- 26. JQuery에서 둘 이상의 속성으로 필터링
- 27. 데이터 레이어에서 둘 이상의 데이터 공급자에 액세스
- 28. 둘 이상의 (고스트) 소비자를 표시하는 활성 MQ
- 29. 함수 매개 변수에 둘 이상의 술어를 사용합니까?
- 30. 둘 이상의 응용 프로그램 서버에 배포
이 모델에는 단 하나의 결함이 있습니다. 매우 수동적 인 것처럼 보이기 때문에 번들이 활성화 된 후에 만 찾을 수 있습니다. 활성화되기 전에 사용 가능한 번들 및 해당 내 보낸 유형의 디렉토리를 가져올 수 있기를 희망했습니다. 이것이 가능한가/어떻게? –
번들에 대해 배우기 위해서는 추적기가 있어야하지만 너무 늦었고 활성화/비활성 상태 인 컨트롤을 제어 할 수 없기 때문에 이것이 전적으로 가능하지는 않습니다. –