有什么方法可以 activate/run osgi Bundle 形成另一个 运行 bundle 吗?

Is there any way to activate/run osgi Bundle form another running bundle?

我正在寻找从另一个 运行 捆绑包激活 OSGi 捆绑包的可能性,这可能吗?

谢谢, 阿肖克

是的,这是规范中管理代理的概念。您将需要一个 Bundle Context 对象。有几种获取此上下文的方法:

  • 强烈推荐:使用 DS,您可以在激活方法中声明一个 BundleContext 对象作为参数
  • 不完全安全:使用 FrameworkUtil.getBundle(Class).getBundleContext()
  • 仅当 DS 不是一个选项时使用:使用激活器,传递 BundleContext 对象

BundleContext 有一个方法 Bundle installBundle(String)。您可以将 URL 传递给包含捆绑包的 JAR 文件。要启动捆绑包,您可以全部 start

由于您可能不太精通 OSGi,您可能想看看 Apache Felix FileInstall。这允许您将捆绑包放在一个目录中,然后自动安装。 API虽然简单,但是由于与世界其他地方的交互,管理OSGi框架有很多复杂的情况。