我想发布一个仅仅是一个配置的OSGi容器的产品.当容器启动时,它应该根据容器的配置下载并安装应用程序 - 包含应用程序所有功能的最新捆绑包.当更新版本的应用程序可用时,我希望应用程序自动下载并更新/安装更新版本的软件包,以便最终用户看起来无缝.
基于Apache Felix OSGi Bundle Repository文档的Motivation部分(目前已过时),我认为这是OBR的目的.那是对的吗?
如果没有,那么这种情况有哪些解决方案?
如果是这样:
OBR存储库是什么样的?我设想它看起来有点像maven存储库,可以通过Internet访问,该XML文件描述了存储库中的可用包.
如何管理可以从Internet访问的存储库?
上述文件指出:
OBR"存储库服务器"不是必需的,因为所有功能都可以驻留在客户端.
但我认为对于那些应该可以从Internet访问的存储库确实存在一些"OBR存储库服务器".在这个示例情况下,我宁愿存储库不在客户端,而是在服务器上,因此客户端可以轻松更新.为了实现这一点,我是否只需设置一个HTTP服务器来托管1)一些描述存储库中可用包的xml文件,以及2)包?
最后,是否有一个简单的示例,演示了所有这些如何协同工作?
你的理解是完全正确的.使用OBR时需要注意的主要问题是,当最终确定时,XML格式会发生很大变化.有时'OBR支持'意味着旧式,有时候是新风格.只要客户端和服务器一致,任何一个都应该没问题.新格式更丰富,但目前对旧款式有更广泛的支持.
要设置自己的http主机,您可以使用repoindex(以前称为bindex).Apache Aries还有一个存储库生成工具.
在maven bundle插件中使用'index'目标将生成OBR元数据,并且还可以直接配置bnd以生成repository.xml.
最后,如果您不想直接管理http服务器,Nexus和Karaf Cave会提供OBR存储库托管.
您可能还会发现此问题有用:OSGI OBR存储库托管?