假设您有一个带有各种视图的 Eclipse 插件,这些视图应该显示来自将数据推送到视图的某些 OSGi 包的数据。我不是让每个视图都与 OSGi 包通信,而是有一个中间 Facade 类,它充当视图的黑板并管理视图与其他 OSGi 包之间的通信——嗯,这就是理论。
问题的出现是因为 ui 包(带有视图和外观)使用声明式服务与另一个包(称为 DataStore)进行通信。由于 Data Store 从另一个源接收异步数据更新,因此它需要将内容推送到 Facade(以及其他捆绑包,如果它们可用)。OSGi 实例化 Facade 以满足对 DataStore 的 DS 配置的基数要求,但视图由 Plugin 的 IApplication 实现实例化。即使 IApplication 和 Facade 是同一个类,我也会得到两个彼此不认识的独立实例。
如何启用这些组件(插件应用程序、视图等和 OSGi 实例化外观)之间的通信?