【问题标题】:Apache Karaf feature prerequisiteApache Karaf 功能先决条件
【发布时间】:2016-11-02 02:38:55
【问题描述】:

卡拉夫 4.0.3

我有以下伪特征:

<features name="my-feature" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
<feature name="C" version="${project.version}" start-level="25" install="auto">
    <bundle start-level="25">...BundleC1...</bundle>
</feature>

<feature name="A" version="${project.version}" start-level="30" install="auto">
    <feature prerequisite="true">C</feature>
    <bundle start-level="30">...BundleA1...</bundle>
</feature>

<feature name="B" version="${project.version}" start-level="35" install="auto">
    <feature prerequisite="true">C</feature>
    <bundle start-level="35">...BundleB1...</bundle>
</feature>

C 是独立的
A 依赖于 C
B依赖于C

在此示例中,捆绑包“BundleB1”导入了错误的“BundleC1”主要版本,我们收到“缺少要求”错误(如预期的那样)。但是,如果我登录到 karaf 控制台并运行 'feature:list',我会看到 C 已启动,A 已卸载,B 已卸载。

我希望 A 能够启动,因为它只依赖于 C。如果我注释掉整个 C 功能或之后运行 feature:install A,A 将正常启动

如果我将这三个功能中的每一个都放在单独的 feature.xml 文件中,我会得到 C+A 为 Started 和 B 为 Uninstalled 的预期结果。

我做错了什么?

我是否误解了先决条件属性的工作原理?作为旁注,如果我一起跳过先决条件属性,那么将不会安装任何功能...

【问题讨论】:

    标签: osgi apache-karaf karaf


    【解决方案1】:

    这是 Karaf 4 中的预期行为:Karaf 创建了一个包含所有要安装的功能的子系统。这个子系统是一次性解决的:要么成功,要么失败,作为一个整体。

    prerequisite 属性告诉 Karaf 将此功能安装在独立的子系统中:在尝试解析其他功能之前,已安装并启动所有捆绑包。

    在你的情况下:

    • C 已安装/启动;
    • A+B 已解决,但失败

    【讨论】:

    • 好的,所以让 C+A 安装/启动和 B 卸载/失败的唯一方法是将每个子功能提取到单独的 feature.xml 文件中?这样它们将被安装在自己的上下文/进程中?
    • 这取决于你如何安装你的功能。如果您使用部署文件夹,那么是的,您必须将它们拆分为不同的文件,如果您使用文件org.apache.karaf.features.cfg,那么您可以指定要安装的功能,并使用括号创建组,例如:(C),( A), (B)
    • 能否请您详细说明如何使用org.apache.karaf.features.cfg 和“组”或指出一些文档的方向?我发现 karaf 文档非常缺乏,而且很难找到相关示例。
    • @JérémieB 这些关于功能文件和子系统之间关系的信息是否记录在任何地方(特别是)?
    猜你喜欢
    • 2012-07-23
    • 2021-11-10
    • 1970-01-01
    • 2017-08-23
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2014-11-01
    相关资源
    最近更新 更多