와 인스턴스화 OSGi 서비스 @ 비 게시 :나는 다음과 같은 구성 요소가있는 OSGi 프레임 모듈 형 시스템이 iPOJO
- 일부 특정 프로토콜 인스턴스 구현, 특정 서버에 대한 선택은 특정 프로토콜을 통해 연결을 나타냅니다 (인스턴스화 연결 서비스 당
- 요청에 따라 인스턴스를 생성하고 사전 구성하는 특정 프로토콜 인스턴스 관리자 서비스
- 프로토콜 관리자 서비스를 집계하고 프로토콜 인스턴스를 제공하도록 요청하는 연결 관리자 필요할 때 다음과 같이 (단일 singletone 서비스)
그들은 OSGi 번들로 패키징된다
`-ConnectionManager
`-ConnectionManager.class
`-IrcProtocol
`-IrcProtocolManagerService.class
`-IrcProtocolInstance.class
`-XMPPProtocol
`-XMPPProtocolManagerService.class
`-XMPPProtocolInstance.class
ConnectionManager
는
@Provides
@Instantiate
@Component
주석하고 enbles Subscriber
인터페이스를 구현한다
메시지를 보내고들을 수있는 기능이 제공되는데 일종의 형식 인 Event Admin
.
각 *ProtocolManager
@Provides
@Instantiate
@Component
주석 그리고 그것은 ConnectionManager
서비스 리스너에 의해 발견의 수 ProtocolManager
인터페이스를 구현한다.
각 *ProtocolInstance
@Provides
@Component
와 annoteted 그리고 Subscriber
인터페이스를 구현한다. 또한 ProtocolInstance
인터페이스를 구현하며 connect()
및 disconnect()
과 같은 일반적인 연결 작업을 제공합니다.
문제는 여기에 ProtocolInstance
의이되지 @Instantiate
주석 트리거에 의해, ProtocolManager
의 내부 new
연산자, 손으로 생성되며, 그 때문에 것입니다 - 그것은 @Provides
주석의에도 불구하고, iPOJO 서비스 출판에 참여하지 않습니다 .
질문 : 어떻게 제대로 (바람직하게는 선언적, 주석) 원시 OSGi 서비스 간행물에 수동으로 다이빙없이이 프로그램 생성 ProtocolListener
서비스를 게시하기을 (적어도 어쩌면, 공장의 일종 외부)? 아니면, 아마, 더 나은 iPOJO 지침에 따라 놀기 위해 내 시스템을 재구성하는 방법이 있을까요?