首页 > 解决方案 > 启动捆绑 jboss fuse karaf 时如何读取外部配置文件

问题描述

问题很简单:在 karaf 上安装 kafka 模块后,我想从 apache kafka 打印所有主题。我需要从位于 jbossfuse/etc 中的 cfg 文件中获取属性并创建一个 KafkaConsumer 对象。我想实现 BundleActivator 以便能够在安装模块时启动方法。问题是:如何从配置文件中获取属性?我在这里找到了一些解决方案:一些解决方案,他们说“你可以使用 OSGi 规范中的 ConfigAdimn 服务。”。我该如何使用它?欢迎所有带有代码的示例

标签: jbossosgibundlekaraf

解决方案


Karaf 使用 Felix-FileInstall 读取配置文件:http ://felix.apache.org/documentation/subprojects/apache-felix-file-install.html 所以如果有一个名为 kafka.cfg 的文件,它会选择它并在 pid 'kafka' 下使用 ConfigAdmin-Service 注册配置。您可以获取 ConfigAdmin-Service 并使用 Activator 获取配置并从那里读取该配置,但我强烈建议使用 DeclarativeServices 或 Blueprint 来与 OSGi-Framework 交互,如果可用,两者都支持注入配置。因为否则您必须处理以下主题:

  • 没有 ConfigAdmin(还没有),可能是因为你的包启动得更早)
  • ConfigAdmin 更改(例如由于包刷新或更新)
  • 配置尚未注册(因为 felix 尚未读取)
  • 配置得到更新(例如 somone 更改文件)

推荐阅读