gpt4 book ai didi

java - 按属性搜索 OSGI 服务

转载 作者:太空狗 更新时间:2023-10-29 22:51:31 24 4
gpt4 key购买 nike

如何通过属性区分实现相同接口(interface)的已发布 OSGI 服务?

最佳答案

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

例如:

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

您要在其中查找既实现了 MyInterface 又具有等于 myportport 属性值的服务。

Here是获取引用的相关 javadoc。

备注1:

上面的例子和javadoc引用了4.2版本。如果您不受限于 J2SE 1.4 运行时,我建议您查看 Release 4.3 syntax ,您可以在其中使用泛型。

备注2:(由Ray提供)

您还可以通过创建 Filter 来预先检查过滤器的正确性来自 filterStr 字符串的对象:

Filter filter = bundleContext.createFilter(filterStr);  

这还允许您将过滤器与其他条件相匹配。您仍然传递 filterStr 来获取引用,因为没有重载说明 Filter 参数。但是请注意,通过这种方式,您将检查两次正确性:getServiceReferencescreateFilter 都在解析过滤器时抛出 InvalidSyntaxException。我想,这当然不是一个令人作呕的低效率,但值得一提。

关于java - 按属性搜索 OSGI 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com