【问题标题】:Inter-plugin communication in EclipseEclipse 中的插件间通信
【发布时间】:2008-10-17 18:44:19
【问题描述】:

是否可以创建自动发现彼此的 Eclipse 插件?

我正在开发一组需要在两种主要情况下运行的插件:

  • 个别
  • 彼此一致。

当单独运行时,插件应该“正常工作”,但当它们协同运行时,它们将共享一些相同的模型内容,并且其中一个插件应该向用户提供其他插件的列表以与之共享内容。例如:

Foo 插件检测到以下内容 可以与之共享本体的插件:

[ ] 栏插件

[ ] Baz 插件

[ ] 不要分享

Eclipse 是否提供任何内部发布/检测方法来促进对其他插件的这种自动检测?

【问题讨论】:

    标签: java eclipse ipc


    【解决方案1】:

    答案应该是通过Declarative Service,它结合了eclipse xml扩展和osgi POJO服务的优点。像 osgi 服务这样隐式动态的东西,但像 eclipse 扩展一样“按需”加载。

    2006 年为 eclipse3.3 引入,您将在 this presentation 中找到这些概念。

    声明式服务提供了定义对其他服务的引用的选项。也可以指定引用的基数。基数由两个数字指定,第一个数字 0 或 1 表示可选性,第二个数字 1 或 n 表示多重性。

    实际上,那些DS (Declarative Services) 并不容易使用,因为您必须访问BundleContext,这意味着跟踪BundleActivator,which is not always easy...

    如果您需要定义某种面向服务的组件模型,this presentation 应该为您提供当今存在的不同替代方案,并详细说明那些“声明式服务”


    发布 rcreswick 发现的与 DS 相关的内容:

    【讨论】:

    • 感谢您的信息。我正在处理链接并尝试吸收许多新术语,但到目前为止,这看起来 DS 可能是正确的……我只需要更好地理解它们即可确定。
    • 实际上最后一个链接列出了可以实现相同目标的其他技术:IPojo 尤其看起来很有希望,但不如 DS(它是 OSGI R4 的一部分)那么标准
    • 谷歌搜索有关声明式服务的更多信息将我带到本教程:第 1 期:eclipsezone.com/eclipse/forums/t96740.html 第 2 期:eclipsezone.com/eclipse/forums/t97690.rhtml 看起来正是我需要的东西。谢谢!
    【解决方案2】:

    好吧,OSGI 服务注册可以在运行时完成基于 pojo 的服务的共享,而不是插件本身。有几个选项可以促进这一点,例如直接编码到 OSGI API、声明式服务、Spring DM 和 iPojo(我相信还有其他的)。

    您可能希望查看白板模式,以作为完成动态观察者/可观察样式解决方案的一种方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      相关资源
      最近更新 更多