У меня есть система модульной OSGi, в которой у меня есть следующие компоненты:Публикация не- @ службы Instantiate OSGi с iPOJO
- конкретной реализации экземпляра протокола, которые представляют собой соединение через specfic протокол к конкретному серверу (экземпляр для каждой услуги подключения)
- Некоторые конкретные службы диспетчера экземпляров протокола, создание и предварительная настройка экземпляров по требованию (несколько одиночных сервисов из, обычно, разных пакетов)
- Менеджер соединений, который объединяет службы диспетчера протоколов и просит их предоставить экземпляры протокола при необходимости (Одна служба 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?