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