【问题标题】:How do you communicate between eclipse declarative services and Views (ContentProviders)你如何在 Eclipse 声明式服务和视图(ContentProviders)之间进行通信
【发布时间】:2010-09-21 21:40:04
【问题描述】:

假设您有一个带有各种视图的 Eclipse 插件,这些视图应该显示来自某些 OSGi 包的数据,这些包将数据推送到视图。我没有让每个视图都与 OSGi 包通信,而是有一个中间 Facade 类,它充当视图的黑板并管理视图与其他 OSGi 包之间的通信——嗯,这就是理论。

问题的出现是因为 ui 包(带有视图和外观)使用声明式服务与另一个包(称为 DataStore)进行通信。由于 Data Store 从另一个源接收异步数据更新,因此它需要将内容推送到 Facade(以及其他捆绑包,如果它们可用)。 OSGi 实例化 Facade 以满足对 DataStore 的 DS 配置的基数要求,但视图由 Plugin 的 IApplication 实现实例化。即使 IApplication 和 Facade 是同一个类,我也会得到两个彼此不认识的独立实例。

如何启用这些组件(插件应用程序、视图等和 OSGi 实例化的外观)之间的通信?

【问题讨论】:

    标签: communication osgi eclipse-pde declarative-services


    【解决方案1】:

    一种解决方案是使用单例,并使用该单例注册应用程序和外观中的一个或两个。

    但是,我真的不喜欢在这个问题上抛出一个全局变量的想法。这似乎没有意义 - 这一定是一个常见问题,所以我假设有一个优雅的解决方案,我只是不知道如何搜索它。

    【讨论】:

    【解决方案2】:

    您也可以使用Spring DM 连接您的OSGi 服务并使用Martin Lippert glue plugin 连接视图与OSGi 服务(或Spring bean),它的好处是您不需要编写任何基于服务API或spring API的代码...

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多