按属性搜索OSGI服务

按属性搜索OSGI服务,第1张

属性搜索OSGI服务

假设您要基于属性的某些值来检索注册的服务,则需要使用 过滤器
(基于LDAP语法)。

例如:

int myport = 5000;String filter = "&(objectClass=" + MyInterface.class.getName()      + ")(port=" + myport + ")";ServiceReference[] serviceReferences = bundleContext.getServiceReferences(null,filter);

您想在其中查找实现

MyInterface
port
属性值等于的服务
myport

这是获取参考的相关javadoc。

备注1:

上面的示例和javadoc引用了发行版4.2。如果您不限于J2SE 1.4运行时,建议您看一下Release 4.3
语法,您可以在其中使用泛型。

备注2 :(由Ray提供)

您也可以通过从字符串创建Filter对象来预先检查过滤器正确性

filterStr

Filter filter = bundleContext.createFilter(filterStr);

这也使您可以将过滤器与其他条件匹配。您仍然可以通过

filterStr
获取引用,因为没有重载可以说明
Filter
参数。请注意,不过,这样你将检查正确性两次都
getServiceReferences
createFilter
InvalidSyntaxException
在解析过滤器。我猜当然不是效率低下的人,但是值得一提。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5623290.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存