Ограничить установку не-iPOJO-сервисов в OSGI

В настоящее время я пытаюсь найти способ "фильтровать" пакеты в OSGI при их установке. Я использую Караф в качестве реализации OSGI и iPOJO для разрешения сервисов. Можно ли как-то гарантировать, что в OSGI разрешено устанавливать только те сервисы, которые предоставляет iPOJO?

Я уже искал в Интернете методы, позволяющие увидеть, импортирует ли конкретный сервис OSGI (например, BundleContext и т. Д.), Но, похоже, это не работает легко.

Спасибо:)

2 ответа

Решение

У меня есть решение моей проблемы... Я сделал это так, как предлагал Эросб. Каждой ссылке на сервис IPOJO принадлежит свойство "name", поэтому я просто создал LDAP-фильтр для метода @Bind, который принимает все значения для свойства name (filter = "(instance.name=*). Services, которые были не созданы с помощью iPOJO, не имеют этого поля, поэтому таким образом я могу отфильтровать любой iPOJO-сервис.

Большое спасибо:)

Наверное, нет, и я не рекомендую это делать. Способ публикации службы лучше рассматривать в качестве детали реализации. Если вы хотите искать сервисы, предоставляемые вашей библиотекой, то лучше добавить в ваши сервисы настраиваемое свойство значения ключа (не знаю, как это сделать с помощью iPOJO) и использовать этот ключ в своем фильтре LDAP.

редактировать: единственными внешне видимыми характеристиками предоставляемых сервисов являются имя класса и свойства сервиса значения ключа, поэтому, если вы не можете найти там никакой разумной информации об iPOJO, у вас не будет большого шанса

Другие вопросы по тегам