【问题标题】:How can I know what bundles I should not include in a Karaf features file?我如何知道哪些包不应该包含在 Karaf 功能文件中?
【发布时间】:2017-06-25 22:36:21
【问题描述】:

如果我在 Karaf 功能文件中包含某些捆绑包,则 Karaf 将停止正常工作。

我如何知道哪些捆绑包不应该包含在功能文件中?例如,如果我在 Windows 上的 Karaf 的 features 文件中添加了这些包,Karaf 不高兴并且表现得很奇怪。我假设是因为 Karaf 已经为这些包提供了 Java 接口。

<bundle>mvn:org.osgi/org.osgi.core/4.3.1</bundle>
<bundle>mvn:org.osgi/org.osgi.compendium/5.0.0</bundle>

还有一种编程方式来确定这一点吗?

是否有我不应该包含的捆绑包列表?

我了解 Karaf 使用 pax-logging 而不是 slf4j。


更详细地说,我的 SBT 项目为我的包编译了一个依赖包的列表,在我从代码中返回的列表中,我得到了 org.osgi.core 和 org.osgi.compendium。它们是我的主要项目 osgi 包的依赖项。现在的问题是,我怎么知道 Karaf 不希望将此安装为我的功能的一部分?

【问题讨论】:

    标签: apache-karaf karaf


    【解决方案1】:

    除框架外,您不得安装其他框架包;) 这是绝对的NOGO!

    因为 Karaf 已经提供了您需要的一切,在这种情况下是框架。 所以甚至不要考虑添加标准。框架包到你的 OSGi 环境,它们都已经在那里了。

    如果您想拥有某些纲要包。 确保安装了实现包,正如您已经指出的那样,pax-logging 包已经提供了 osgi 日志记录概要服务所需的一切。

    Pax-Web 和 OSGi HttpService 包也是如此。 你会发现很多已经使用 Karaf 预先注册的 OSGi 纲要服务, 如果您需要更多,请安装实现,而不是规范包。

    编辑

    nop programmatic 或 Karaf 内部方式可以告诉您不包含这些捆绑包。这只是众所周知的事情。 一个实现包也总是会给你带来所需的 osgi 包。

    【讨论】:

    • 这很好,但我怎么知道我不应该安装哪些?我想要一个函数,或者能够编写一个函数来告诉我是否不允许安装 OSGi 包。
    • 一般来说,不应该安装任何 OSGi 包。如果您查看规范,您将需要找出哪一个提供了实现。最近我们有很多来自 Apache 项目的参考实现,比如 Aries 和 Felix。但是您也可以从 Eclipse 中找到实现。如果不确定,请查看 Karaf 的文档,如果仍然不够清楚,请在邮件列表上联系我们。
    • 顺便说一句。 pax-logging 还包括 slf4j,它是一个 log-framework-to-osgi-framework Wrapper 有点东西;)
    猜你喜欢
    • 2018-01-09
    • 2016-01-21
    • 2023-01-30
    • 1970-01-01
    • 2021-07-06
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多