Fabric8:获取 OSGi 包内的当前配置文件

Fabric8: get current profile inside OSGi bundle

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

我有一个包含 by bundle 的配置文件和里面的一些配置文件,例如:

捆绑包: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 不行?

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

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