【问题标题】:OSGI: How to find out what bundles are subscribed to a specific property defined on my service reference dictionary?OSGI:如何找出哪些包订阅了我的服务参考字典中定义的特定属性?
【发布时间】:2017-09-01 03:24:47
【问题描述】:

当我注册一个 ServiceReference 时,我定义了我在 Dictionary 类中发布的 OSGi 事件的主题,就像上下文方法定义所说的那样:

registerService(Class, service, 字典)

我的字典定义是:dictionary.put(EventConstants.EVENT_TOPIC, topics);

主题是一个字符串数组,其中包含一些字符串,这些字符串非常清楚地定义了我正在发布的每种可能的事件类型,如下所示:

字符串 [] 主题 = 新字符串 [] { "ONE", "TWO" };

我想知道哪些包订阅了字典中主题中定义的特定属性。我的意思是什么捆绑包将处理“TWO”的出版物。

谢谢。

【问题讨论】:

    标签: java osgi equinox knopflerfish


    【解决方案1】:

    为了接收事件,bundle 注册了一个带有主题的 EventHandler 服务作为 event.topics 属性。因此,要找到侦听某些主题的包,您可以搜索所有 EventHandler 类型的服务并检查它们的服务属性 event.topics。

    【讨论】:

    • 我得到了事件处理程序 ServiceReference sr = context.getServiceReference(EventHandler.class.getName()); 的服务引用然后是 sr.getUsingBundles() 的捆绑包对吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多