1

我需要在另一个包的执行过程中等待启动一个包,这可能吗?

4

3 回答 3

4

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

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

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

网上有个不错的Chapter 6, Dynamic Services,它准确地描述了这个问题以及有什么解决方案来解决它(至少描述了 3 个解决方案)。

一般来说,我可以向任何想要了解/应用 OSGi (Equinox) 的人推荐这本书OSGi 和 Equinox 。

于 2010-05-04T13:09:10.940 回答
2

你可以用不同的方式做到这一点。首先,您可能会看一下 Bundle 接口类的start方法。有了它,您可以启动一个特定的捆绑包。您还可以查看声明式服务或启动级别规范。

首先,您应该阅读 OSGi 核心规范(可在www.osgi.org免费获得)的第 4.4.5 节(Starting Bundles)。

于 2010-03-09T07:53:37.047 回答
1

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

于 2010-05-27T20:58:52.030 回答