【问题标题】:Fabric8: get current profile inside OSGi bundleFabric8:获取 OSGi 包中的当前配置文件
【发布时间】:2016-04-21 14:29:20
【问题描述】:

我正在使用 Fabric8 v.1.2.0.redhat-133。

我有一个配置文件,其中包含捆绑包和一些配置文件,例如:

捆绑:mvn:my-gr/my-art/1-SNAPSHOT

配置文件:config.xml

我可以调用

ProfileManager manager = ProfileManagerLocator.getProfileManager();
Profile profile = manager.getProfile("1.0", "profile-name");
byte[] brokerConf = profile.getFileConfiguration("config.xml");

在我的包的代码中并获取文件。有用。但在这种情况下,我需要知道配置文件的名称。

有没有办法获取当前包的配置文件的名称?

或者有没有更好的方法来获得config.xml,也许不是ProfileManager?

【问题讨论】:

    标签: java osgi fabric8


    【解决方案1】:

    这是不可能的,因为 OSGi 级别的配置文件不存在。 配置文件是一个 Fuse 概念,可以列出功能和捆绑包。特性是一个 Karaf 概念,只有包才是真正的 OSGi 工件。这意味着 OSGi 容器不知道任何功能或配置文件,因此无法告诉您哪个功能或配置文件负责安装捆绑包。即使它可能仍然存在这样一个事实,即多个功能和配置文件可能会将您的捆绑包放在他们的列表中,因此无法说出哪个配置文件是“当前”配置文件。

    如果您想从配置文件访问文件,您应该使用配置文件 URL 处理程序。见http://fabric8.io/gitbook/urlHandlers.html

    【讨论】:

    • 是的,我明白 OSGi 对配置文件一无所知。我真的不需要当前的配置文件,我需要从中读取配置文件。而profile: url 处理程序正是我所需要的。我徘徊为什么我在文档中错过了它。有用。谢谢。
    猜你喜欢
    • 2011-08-18
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2011-02-26
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多