我想知道我是否可以配置一个像Karaf (或任何其他流行的)这样的OSGi容器,通过任何网络机制(RMI、HTTP、URLClassLoader等)从另一台机器上的远程存储库下载包(.BNDs)?
理想情况下,我可以随时将我的包的新版本部署到这个远程代码库,并以某种方式触发OSGi容器“下载”(安装/部署)远程包,并在同一包的旧版本上热部署它们。
这个是可能的吗?如果是这样的话,是怎么做的?提前感谢!
发布于 2013-09-16 21:55:23
OSGi有一个应用程序接口,用于管理每个捆绑包激活者收到的BundleContext上的OSGi框架。此接口允许您通过URL或InputStream安装/更新包。
因为这是一个标准化的API,所以有很多人开发了一些包来提供有关此部署过程的策略。最典型的是Apache FileInstall,它监视一个目录,并自动安装该目录中找到的每个包,并在该包消失时卸载该包。例如,这可以很好地与dropbox一起使用。它还支持通过Configuration Admin服务进行配置。另一方面,您可以找到Apache Ace,它提供了一个远程管理系统。
要找到最佳解决方案,请尝试列出您拥有的需求。一个或两个系统,还是一百万个?本地还是通过慢速线路远程传输?
有一件事是肯定的,你会发现一些项目或提供商能够为你提供一个实现你想要的管理策略的OSGi包。
发布于 2013-09-16 19:20:17
我们使用Apache Felix并维护an OBR repository。设置完成后,您可以从OSGi shell部署新版本。这需要您手动登录并输入命令,例如deploy com.example.foo。
或者,您也可以直接从urls安装,如install http://example.com/bundles/bundle.jar。
您的最后一个需求(自动部署)比较棘手。您也许可以在OSGi容器上启用远程shell,并将其作为构建的一部分,通过telnet推送命令。
发布于 2013-09-17 04:45:08
我建议您在documentation for provisioning上查看Karaf的配置。您可以使用maven urls、http或文件引用来部署包。或者,您可以将一组捆绑包部署为功能定义(从maven repo加载所有需要和使用的捆绑包),或者部署kar文件。
https://stackoverflow.com/questions/18825030
复制相似问题