Попытка заставить Декларативную Службу SCR работать на WebSphere 8.5 (не-свобода)
У меня есть приложение OSGI, управляемое проектом, работающее в WebSphere v8.5(Non-Liberty Profile), где одна служба, Service_A, имеет ссылку на другую службу, Service_B. Я хотел бы, чтобы Service_B управлялся средой выполнения декларативного сервисного компонента службы вместо контейнера проекта, но при этом Service_A должен был управлять проектом.
Я считаю, что я испытываю трудности с запуском SCR. Я не уверен, правильно ли я включаю его, или как я могу проверить, работает ли он. Я определил "активировать" и "деактивировать" в реализации Service_B с помощью некоторых операторов печати, которые, насколько я понимаю, должны вызываться SCR, когда он находит службу, как я понимаю, но я уверен, что они не вызывается, потому что точки останова на этом не заканчиваются, и я не вижу вывода в консоли.
Пока что я стараюсь включить время выполнения:
Насколько я понимаю, следующие три баночки / связки - это все, что нужно для запуска SCR.
- org.eclipse.equinox.ds
- org.eclipse.equinox.util
- org.eclipse.osgi.services
Я пошел дальше и создал новый пакет /jar OSGI, содержащий все вышеупомянутые файлы jar, а затем просто передал экспорт каждого jar в этот новый пакет. Затем я добавил этот комплект DS в свое основное приложение OSGI и импортировал каждый из этих экспортов комплекта DS в комплект, содержащий службу, которая должна управляться SCR.
Вот где я, кажется, зацикливаюсь:
Платформа OSGI загружает пакет, содержащий службу, но служба не добавляется в реестр, что говорит о том, что файл component.xml, определяющий службу, не читается, что, по мнению интерна, означает, что SCR не работает, потому что он это то, что читает этот файл, насколько я понимаю.
Так что до сих пор застрял на способности запустить SCR. Любая помощь очень ценится! У меня очень сжатые сроки (я знаю... кто не прав?:)), и всякая помощь приветствуется! Спасибо!
1 ответ
Я не знаком с WebSphere, но проблема, как мне кажется, заключается в следующем утверждении из вашего поста: "Я продолжил работу и создал новый пакет /jar OSGI, содержащий все вышеупомянутые jar-файлы, а затем просто передал экспорт каждая банка в этой новой пачке ". Это неверно
Что вы должны сделать, это:
- Загрузите пакеты, которые вместе образуют работающую реализацию DS, в вашу среду OSGi, что означает: как отдельные пакеты (они уже являются пакетами).
- Создайте отдельный пакет для вашего кода и XML, связанных с Service_B.
Только так SCR может забрать ваш пакет и создать для него сервисы. SCR - это отдельный пакет, который отслеживает другие пакеты для компонентов DS и обрабатывает эти объявления соответствующим образом.