【问题标题】:Launch plugin as OSGi作为 OSGi 启动插件
【发布时间】:2010-08-08 09:54:10
【问题描述】:

我将我的 Java SE(右键单击项目配置 -> 转换为插件项目)更改为插件,但是当我尝试运行它时 - 它作为 Eclipse 应用程序运行,如何将它作为 OSGi 启动? 谢谢!

【问题讨论】:

    标签: java eclipse eclipse-plugin osgi


    【解决方案1】:

    将 JavaSE 应用程序转换为单个大包基本上意味着您以不同的方式启动代码。您现在可以实现 BundleActivator 接口,而不是 public static void main(String[] args),它有一个 start() 和一个 stop() 方法(每个都有一个 BundleContext 作为参数)。

    启动这在一定程度上取决于您选择的框架实现。从 OSGi 4.2 开始,有一个启动器 API(规范的第 6.2 段),它指定了一种通用机制来启动框架并运行您的单个包。如果您使用较旧的实现,则启动是特定于框架的,我只能参考该框架的文档。

    【讨论】:

    • 你会推荐一个符合 OSGi 4.2 的实现吗?
    • 如果我将通过 BundleActivator 的方法开始运行我的应用程序,它如何与框架中的包交互?
    • @Thorbjørn:是的,我建议使用最新版本的规范。 @EK:从技术上讲,您启动框架,它将调用您指定的实现 BundleActivator 的类的 start 方法。作为参数传递给启动(和停止)方法的 BundleContext 是框架的接口。它允许您与服务注册表进行交互。服务是捆绑包交互的主要机制。您可以通过 BundleContext 发布和查找服务。有关更多信息,我建议您了解 OSGi。
    • 谢谢,我可以看到我的问题可以被解释为是否存在。我在想你是否会推荐任何特定的实现?
    • 确实,我对您的问题的解释是错误的。 :) 我个人建议使用 Apache Felix,多年来我在许多项目中都使用过它。事实上,我是提交者之一,正在为此工作,所以我并不公正。老实说,OSGi 的优势之一是它具有多个兼容的实现,因此 Equinox 和 Knopflerfish 也可以正常工作,我绝对建议在多个框架中测试您的代码(例如使用 Pax Runner 来启动框架和版本您选择和 Pax Exam 以在其中任何一个中运行测试)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2015-07-06
    • 2016-04-17
    • 2013-11-30
    • 2011-03-27
    相关资源
    最近更新 更多