OSGi可以安装/部署URL上托管的捆绑包吗?

时间:2013-09-16 09:50:29

标签: java url osgi apache-karaf osgi-bundle

我想知道我是否可以通过任何网络机制配置像Karaf(或任何其他流行的)OSGi容器从另一台机器上托管的远程存储库下载软件包(.BND)( RMI,HTTP,URLClassLoader等)?

理想情况下,我可以随时将此捆绑包的新版本部署到此远程仓库,并以某种方式触发OSGi容器“下载”(安装/部署)远程捆绑包并对其进行热部署相同捆绑包的旧版本。

这可能吗?如果是这样,怎么样?提前谢谢!

3 个答案:

答案 0 :(得分:1)

OSGi有一个API,用于管理每个bundle激活器接收的BundleContext上的OSGi框架。此API允许您通过URL或InputStream安装/更新捆绑包。

由于这是一个标准化的API,因此很多人都在制作捆绑包,这些捆绑包围绕此部署过程提供策略。最典型的是Apache FileInstall,它监视一个目录并自动安装在该目录中找到的每个包,并在它消失时卸载它。这适用于例如dropbox。它还支持通过Configuration Admin服务进行配置。另一方面,您可以找到Apache Ace,它提供了一个远程管理系统。

要找到最佳解决方案,请尝试获取您的要求。一个或两个系统还是100万?本地或远程慢线?

有一件事是肯定的,您会发现某些项目或提供商能够为您提供实施所需管理政策的OSGi包。

答案 1 :(得分:0)

我们使用Apache Felix并维护an OBR repository。设置完成后,您可以从OSGi shell部署新版本。这需要您手动登录并输入命令,例如deploy com.example.foo

或者,您可以直接从网址安装,例如install http://example.com/bundles/bundle.jar

您的上一个要求(自动部署)比较棘手。您可以在OSGi容器上启用远程shell,并作为构建的一部分通过telnet推送命令。

答案 2 :(得分:0)

我建议在documentation for provisioning查看Karaf的配置情况。 您可以使用maven URL,http或文件引用来部署捆绑包。或者,您可以将您的捆绑包部署为功能定义(从maven仓库加载所有必需和使用的捆绑包)或部署kar文件。