[英]Can OSGi install/deploy bundles hosted on a URL?
我想知道是否可以配置OSGi容器(例如Karaf (或任何其他流行的容器)),以便通过那里的任何联网机制(RMI,HTTP,URLClassLoader等)从托管在另一台计算机上的远程存储库中下载捆绑包(.BND)。 )?
理想情况下,我可以随时将新版本的捆绑软件部署到此远程存储库中,并以某种方式触发OSGi容器“下载”(安装/部署)远程捆绑软件,并将其热部署到旧版本的相同的捆绑包。
这可能吗? 如果是这样,怎么办? 提前致谢!
OSGi具有一个API,用于在每个Bundle激活程序接收的BundleContext上管理OSGi框架。 该API允许您通过URL或InputStream安装/更新捆绑软件。
由于这是一个标准化的API,因此有很多人制作捆绑软件,以提供有关此部署过程的策略。 原型服务器是Apache FileInstall,它监视一个目录并自动安装在此目录中找到的每个捆绑软件,并在捆绑软件消失后将其卸载。 例如,这对于Dropbox效果很好。 它还支持通过Configuration Admin服务进行配置。 另一方面,您可以找到提供远程管理系统的Apache Ace。
为了找到最佳的解决方案,请尝试列出您的要求。 一两个系统还是一百万? 通过慢速线路本地还是远程?
可以肯定的是,您会发现一些项目或提供程序能够为您提供实现所需管理策略的OSGi捆绑包。
我们使用Apache Felix并维护OBR存储库 。 设置完成后,您可以从OSGi Shell部署新版本。 这确实需要您手动登录并输入命令,例如deploy com.example.foo
。
另外,您也可以直接从网址进行install http://example.com/bundles/bundle.jar
,例如install http://example.com/bundles/bundle.jar
。
您的最后一个要求(自动部署)比较棘手。 您也许可以在OSGi容器上启用远程Shell,并在构建过程中通过telnet推送命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.