實例化OSGi服務我具有其中我有以下組分的OSGi模塊化系統:發佈非@與iPOJO
- 一些具體協議實例實現方式中,其代表通過specfic協議的特定服務器的連接(實例化每個連接服務)
- 一些具體協議實例管理器服務,創建和預先配置按需實例(多個singletone服務從中,通常,不同的包)
- ,其聚合協議管理服務,並要求他們提供協議實例連接管理需要的時候(單singletone服務)
它們被打包到OSGi包如下:
`-ConnectionManager
`-ConnectionManager.class
`-IrcProtocol
`-IrcProtocolManagerService.class
`-IrcProtocolInstance.class
`-XMPPProtocol
`-XMPPProtocolManagerService.class
`-XMPPProtocolInstance.class
的ConnectionManager
標註有
@Provides
@Instantiate
@Component
並實現Subscriber
接口,enbles它具有發送和收聽郵件的能力,可以輸入某種類型的Event Admin
。
每個*ProtocolManager
標註有
@Provides
@Instantiate
@Component
並實現ProtocolManager
接口,這使得它的發現由ConnectionManager
服務偵聽器。
每個*ProtocolInstance
是annoteted與
@Provides
@Component
,並實現Subscriber
接口。它還實現了ProtocolInstance
接口,它提供瞭如connect()
和disconnect()
這樣的通用連接操作。
這裏的問題是,ProtocolInstance
S被手工製作,用new
運營商的ProtocolManager
內,而不是由@Instantiate
註釋觸發,正因爲如此 - 不參與iPOJO服務發佈,儘管這是@Provides
註釋。
的問題是:如何正確(最好聲明,與註解)發佈該程序創建ProtocolListener
服務,而無需手動潛入原OSGi服務發佈(至少外一些工廠,也許)?或者,也許,如何重新構建我的系統,以便更好地與無聲的iPOJO指南一起玩呢?