【问题标题】:Karaf bundles not loaded from .kar on deploy部署时未从 .kar 加载 Karaf 包
【发布时间】:2017-12-10 01:49:16
【问题描述】:

我有一个 Karaf 应用程序,在 .kar 文件中包含三个包,由 features.xml 指定。

当我在目标 VM 上部署已编译的 .kar(使用 maven 插件)时,主包会在 Karaf 中加载和更新,但似乎没有提取和部署依赖包(附加功能) - Karaf 尝试从 /system/ 存储库而不是 .kar 获取捆绑包。

部署在我的开发机器上工作,我怀疑依赖包是从本地 Maven 存储库中提取的,由于构建过程,该存储库是最新的。

目前要在目标机器上解决此问题,我必须将本地存储库复制到 [karaf.root]/system/ 文件夹,以便在热部署 .kar 时更新所有捆绑包。

有谁知道如何配置功能 .xml 以便从 .kar 中提取捆绑包,而不是 [最初] 从 /system 文件夹中提取? 我的 features.xml 文件是;

<features name="${project.artifactId}-${project.version}"
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="${project.artifactId}" install="auto" version="${project.version}"
    description="${project.description}">
    <bundle dependency="true">mvn:com.google.code.gson/gson/${gson.version}</bundle>
    <bundle>mvn:uk.co.company.product/product-common-api/${project.version}</bundle>
    <bundle>mvn:uk.co.company.product/product-core-services/${project.version}</bundle>
    <bundle>mvn:uk.co.company.product/product-scenario-exporter/${project.version}</bundle>

<feature prerequisite="true">camel-jetty</feature>
<feature prerequisite="true">webconsole</feature>
</feature>

我已经检查过,所需的包(即 common-api)包含在已编译的 kar 文件的存储库文件夹中。

【问题讨论】:

    标签: java osgi apache-karaf apache-servicemix


    【解决方案1】:

    您只需将 mvn url 用于所需的捆绑包。 kar 的内容将是此类依赖项的一个来源。我假设你的 kar 有错误。你能在这里发布你的 kar 文件吗(可能精简到中性内容)?

    你的 kar 里面的文件结构是什么?它应该包含一个目录存储库,内部应该是子目录和 jar,就像在 maven 存储库中一样。只有这样才能解析 mvn url。

    【讨论】:

    • 用 features.xml 扩展问题 Christian,谢谢。
    猜你喜欢
    • 2016-01-29
    • 2018-05-20
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多