У меня возникли проблемы с поиском сервисов, которые предоставляются некоторыми пакетами OSGi, которые не активируются. Опишу ситуацию:Не удается найти услугу, потому что пакет OSGi не активирован
- Bundle А определяет интерфейс X
- Связки B, C, и D предоставляют услуги, которые реализуют интерфейс X
- услуг Эти пучки регистрируются с помощью Spring DM, так что они создаются только тогда, когда пакет активирован, а Spring DM инициализирует контекст приложения, определенный в комплекте
- Пакет A активирован и в какой-то момент запрашивает реестр услуг для служб X. Он sn't найти, потому что пучки B, C и D не были перемещены в состояние ACTIVE (они только ПОСТАНОВИЛИ).
Я не могу получить пучки B, C или D для начала и, следовательно, зарегистрировать их службы. Принуждение их к запуску путем добавления их к config.ini
не является опцией, так как в приложении может быть любое количество пакетов, которые установлены в приложении (через механизм обновления, подобный p2-подобному Eclipse), который реализует интерфейс X.
Приложение это приложение RCP на базе Eclipse 3.5, использующее Spring 2.5.6 и Spring DM 1.2.1.
Как заставить эти пучки активироваться?
Не могли бы вы предоставить информацию об ошибках, которые вы получили? И: Bundle A экспортирует интерфейс X, а Bundle B, C, D импортирует его, правильно? – akr
Да, интерфейс X экспортируется пакетом A и импортируется B, C и D. Нет сообщений об ошибках. Запрос служб, реализующих X в реестре службы, просто возвращает пустой список. –
Какова мощность, которую вы запрашиваете в 'A'? Если это «1..N», у вас есть круговая зависимость. –