【问题标题】:Eclipse extension points vs manual programmatic accessEclipse 扩展点与手动编程访问
【发布时间】:2012-02-22 17:52:14
【问题描述】:

要将一个插件公开的服务引用到另一个 Eclipse 插件中,我有两种方法

1.)扩展点(复杂)

2.) 只需使用 BundleContext 获取捆绑列表,然后访问您的其他 Eclipse 通过ServiceReference插件并调用相应的服务(非常简单)

我可以看到 2 比 1 容易得多。)

那么 2 是正确的方式吗?

当时为什么发明了 1.)?

【问题讨论】:

    标签: java eclipse eclipse-plugin osgi


    【解决方案1】:

    (1) 和 (2) 都不正确。

    (1) 与 OSGi 服务毫无关系。这是一个完全不同的用例。

    (2) 你做得比必要的复杂得多。您只需要使用声明式服务来获取对您要使用的服务的引用。不要去发布服务的包,因为你不应该知道或关心哪个包是服务的来源。

    【讨论】:

    • 但如果我的服务是有状态的并保持状态,我需要转到特定的捆绑包。我打算使用单例捆绑包作为我的服务源。
    • 如果我将我的服务实例类设为静态和单例,那么我可以避免使用特定的捆绑包吗?
    【解决方案2】:

    您可以找到here 扩展和 OSGi 服务的一个很好的比较。没有对错之分(恕我直言,扩展点机制并不复杂,工具更好,...),在某些情况下一个更好在另一个。 Eclipse 的早期版本不基于 OSGi,因此 OSGi 方式从 Eclipse 3.0 开始可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多