限制在 OSGI 中安装非 iPOJO 服务

Restrict non-iPOJO services being installed in OSGI

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

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

谢谢:)

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

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

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

非常感谢 :)