在2个Eclipse rcp插件之间动态共享数据

问题描述 投票:0回答:2

假定在Eclipse rcp应用程序中有两个插件P1和P2。

P1和P2都是通过不同的构建过程分别构建的

在我的情况下,取决于用户的选择,基本产品中只有p1,只有p2或两个插件都可用。

我想在两个插件都可用时在插件P1和P2之间交换数据,否则插件将使用它们自己的数据。

OSGI声明式服务在我的情况下是否可以正常工作,

我可以通过任何方式公开从插件P1和P2返回json或字符串的服务api可以使用它,而无需明确依赖它,我的意思是,插件p2仅应在p1存在时使用它,如果不存在,应该正常运行。

请注意。

eclipse eclipse-plugin osgi rcp declarative-services
2个回答
1
投票

当然,您可以具有可选的依赖关系-但我的建议是引入一个P3,以保留公共数据。使P1和P2依赖于该插件,然后从通用的“存储”插件无条件地检索数据。

如果要使P1依赖于P2(反之亦然),则需要将此依赖关系设置为可选,并且要引入两者的循环编译时依赖关系。解决这种循环的一种好方法是引入一个通用的第三模块,该模块可以满足通用需求。


0
投票

感谢您的建议

我完全同意拥有一个通用插件将是理想选择。

但是就我们而言,我们有一个基础产品,但是不幸的是我们没有控制权,我的意思是我们可以将任何插件添加到基础存储库中。

插件P1和P2是2个不同的产品,它们彼此独立工作,但是具有可以相互补充的数据。如果插件p1已安装在基本产品上,并希望使用该数据来扩展p2中的现有视图,我们希望从插件p2进行api调用,否则仅显示p2数据。

我假设使用命令式服务,插件P2可以使用osgi规范api调用插件P1公开的api,而osgi规范api是eclipse标准插件的一部分,而无需在插件之间添加任何依赖关系P1和P2。请让我知道是否有任何选择可以实现这一目标。

© www.soinside.com 2019 - 2024. All rights reserved.