我需要等待在执行另一个捆绑包期间启动捆绑包,这可能吗?
答案 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
在激活器启动和停止方法中传递)