如何在运行时启动OSGI包?

时间:2010-03-09 02:31:43

标签: osgi equinox eclipse-rap

我需要等待在执行另一个捆绑包期间启动捆绑包,这可能吗?

3 个答案:

答案 0 :(得分:4)

如果您的意思是:启动捆绑包的顺序。

在启动OSGi应用程序时,如何确保其他软件包提供的较低级别服务可用于更高级别的服务(/用于其他软件包)。然后你应该阅读动态服务。

有几种方法可以解决这个问题(因为它在不同版本的OSGi中已经发生了变化)。如果您不熟悉OSGi和动态服务,最合乎逻辑的解决方案可能是声明式服务,但至少您还应该阅读 Service Activator Toolkit ,因为它也有自己的优势和优势缺点。

有一个很好的在线Chapter 6, Dynamic Services,它准确地描述了这个问题以及解决它的解决方案(至少描述了3个解决方案)。

一般情况下,对于想要了解/应用OSGi(Equinox)的人,我可以推荐这本书OSGi and Equinox

答案 1 :(得分:2)

您可以通过不同方式执行此操作。首先,您可以查看Bundle接口类的 start 方法。有了它,你可以开始一个特定的捆绑。您还可以查看声明性服务或开始级别规范。

首先,您应该阅读OSGi核心规范的第4.4.5节(启动捆绑包)(免费提供www.osgi.org)。

答案 2 :(得分:1)

你试过BundleContext.install()吗? (BundleContext在激活器启动和停止方法中传递)