我目前正在尝试找到一种在OSGI中“过滤”捆绑包的方法,同时安装它们 . 我使用Karaf作为OSGI实现,使用iPOJO进行服务解析 . 有什么办法可以确保,只允许在OSGI中安装iPOJO提供的服务吗?
我已经在网上搜索了一些方法来查看特定服务是否输入了OSGI的东西(比如BundleContext等),但这似乎并不容易 .
谢谢 :)
可能不会,我不建议这样做 . 发布服务的方式最好考虑作为特定于实现的细节 . 如果要搜索库提供的服务,最好向服务添加自定义键值属性(不知道如何使用iPOJO)并在LDAP过滤器中使用该键 .
编辑:提供的服务'只有外部可见的特征是classname和键值服务属性,所以如果你找不到任何关于iPOJO的合理信息,那么你没有太多的机会
我找到了解决问题的方法......我有点像erosb建议的那样做 . 每个IPOJO服务引用都拥有属性“name”,所以我刚刚为@Bind方法创建了一个LDAP过滤器,该方法接受name-property的所有值(filter =“(instance.name = *) . 服务,这是不是用iPOJO创建的,没有那个字段,所以这样我可以过滤任何iPOJO服务 .
非常感谢 :)
2 回答
可能不会,我不建议这样做 . 发布服务的方式最好考虑作为特定于实现的细节 . 如果要搜索库提供的服务,最好向服务添加自定义键值属性(不知道如何使用iPOJO)并在LDAP过滤器中使用该键 .
编辑:提供的服务'只有外部可见的特征是classname和键值服务属性,所以如果你找不到任何关于iPOJO的合理信息,那么你没有太多的机会
我找到了解决问题的方法......我有点像erosb建议的那样做 . 每个IPOJO服务引用都拥有属性“name”,所以我刚刚为@Bind方法创建了一个LDAP过滤器,该方法接受name-property的所有值(filter =“(instance.name = *) . 服务,这是不是用iPOJO创建的,没有那个字段,所以这样我可以过滤任何iPOJO服务 .
非常感谢 :)