0

我目前正在尝试找到一种在安装 OSGI 时“过滤”捆绑包的方法。我使用 Karaf 作为 OSGI 实现,使用 iPOJO 进行服务解析。有什么办法可以确保只允许在 OSGI 中安装 iPOJO 提供的服务?

我已经在网上搜索了查看特定服务是否导入 OSGI 内容(如 BundleContext 等)的方法,但这似乎并不容易。

谢谢 :)

4

2 回答 2

1

可能没有,我不建议这样做。服务的发布方式最好考虑为特定于实现的细节。如果您想搜索您的图书馆提供的服务,那么最好向您的服务添加自定义键值属性(不知道如何使用 iPOJO 执行此操作)并在 LDAP 过滤器中使用该键。

编辑:所提供的服务唯一对外可见的特征是类名和键值服务属性,所以如果你在那里找不到任何关于 iPOJO 的合理信息,那么你没有太多机会

于 2015-11-06T12:01:35.897 回答
0

我找到了解决问题的方法......我有点像 erosb 建议的那样做。每个 IPOJO 服务引用都拥有属性“name”,所以我刚刚为 @Bind 方法创建了一个 LDAP 过滤器,它接受 name-property(filter = "(instance.name=*).Services 的所有值,即不是用 iPOJO 创建的,没有那个字段,所以我可以过滤任何 iPOJO 服务。

非常感谢 :)

于 2015-12-01T15:48:30.280 回答