Osgi ApacheCave解决了什么问题
我目前使用karaf和artifactory作为我的osgi jar存储库。这很有效。我遇到过ApacheCave工具for Karaf,它看起来非常像一个存储库,只是它也可以存储在数据库或其他数据源中,而不是存储在文件系统中Osgi ApacheCave解决了什么问题,osgi,apache-karaf,karaf,obr,Osgi,Apache Karaf,Karaf,Obr,我目前使用karaf和artifactory作为我的osgi jar存储库。这很有效。我遇到过ApacheCave工具for Karaf,它看起来非常像一个存储库,只是它也可以存储在数据库或其他数据源中,而不是存储在文件系统中 这有什么价值。使用Cave可以解决哪些用例?免责声明:我没有参与OSGi规范或ApacheCave的开发。以下所有内容都是我根据个人经验得出的结论 ApacheCave是OSGi存储库规范的参考实现。后者反过来解决了OSGi捆绑包供应的问题。它应该以以下方式工作:它提供了
这有什么价值。使用Cave可以解决哪些用例?免责声明:我没有参与OSGi规范或ApacheCave的开发。以下所有内容都是我根据个人经验得出的结论 ApacheCave是OSGi存储库规范的参考实现。后者反过来解决了OSGi捆绑包供应的问题。它应该以以下方式工作:它提供了一个存储库描述符,它定义了一组资源(通常是捆绑包)、它们提供的功能以及它们需要的需求。此元信息用于在部署某些资源时自动调配依赖项 详细说明见规范第132节 OSGi存储库周围的情况对我来说似乎相当阴暗。ApacheCave是OSGi存储库的提供者,但我没有找到任何适合它的客户端。我的问题仍然没有答案 有几种选择。ApacheFelix有自己的实现(org.Apache.Felix.bundlerepository),这在概念上非常相似,但与规范不完全兼容(信息可能已经过时,需要检查)。Karaf使用Features facility解决了同样的问题 这有什么价值?使用Cave可以解决哪些用例
Cave
用于存储存储库
,其中包含有关捆绑包(或一般工件)的重要信息(如位置、版本、需求、功能等)。它是解决过程中的三个重要部分之一。另外两个是Resolver
和Resolve Context
Resolver
是您可以从OSGi运行时知道的。它会告诉您是否满足了捆绑包的要求(因此可以启动捆绑包)。为此,它与解析上下文
对话,以了解什么是可用的,什么是预期的,什么是可选的,等等。解析上下文
将依次咨询一个或多个存储库
,以了解哪些捆绑包可用。通常,这些只是运行时中安装的包。但是,有一个运行时可以使用Repository
引用外部工件,当Resolver
确定需要这些工件时,可以安装这些工件
在构建时可以使用大致相同的概念。例如,project允许您定义.bndrun
文件,这些文件是解析上下文
的基于属性的版本。您可以在它们内部提供的内容之一是存储库
,其中包含有关可用捆绑包的信息。此类存储库可以由Cave
(或其他任何东西,包括本地XML文件)提供服务。基于这些信息,Bnd
可以为您组装一个运行时(根据您希望运行的包告诉您需要哪些包)
此外,
Cave
可以充当Maven存储库或其他Maven存储库的代理。这很方便,因为您可以使用Cave
作为Resolver
和传统Maven依赖项的“单点联系人”。AFAIK OSGI Repository spec(通常称为R5)的参考实现是(或至少是)jbosgi Repository(),尽管缺乏文档。请参阅