启动捆绑jboss保险丝karaf时如何读取外部配置文件

时间:2018-12-06 22:56:21

标签: jboss osgi bundle karaf

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

1 个答案:

答案 0 :(得分:0)

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

  • 尚无ConfigAdmin(可能是因为您的软件包较早启动)
  • ConfigAdmin发生更改(例如,由于软件包刷新或更新)
  • 该配置尚未注册(因为felix尚未阅读)
  • 配置得到更新(例如,somone更改了文件)