当前位置: 首页 > 知识库问答 >
问题:

启动bundle jboss fuse karaf时如何读取外部配置文件

傅泉
2023-03-14

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

共有1个答案

龙华翰
2023-03-14

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尚未读取)
  • 配置将得到更新(例如,有人更改了文件)
 类似资料:
  • 外部读取配置命令 可以写到一个文件中,用 Mininet 直接调用。例如脚本文件名为 my_cli_script,则可以执行 mininet> source my_cli_script 或者 # mn --pre my_cli_script

  • 问题内容: 我有一个要求,要将所有logback配置都放在war文件之外。目前,我已将配置文件(logback.xml)放在类路径上。我正在使用JBOSS EAP Web应用程序服务器,请提出如何实现相同的建议。 问题答案: 进入jboss启动/运行脚本并添加以下选项: 的java -Dlogback.configurationFile = /路径/到/ config.xml中 chapters.

  • 我有一个使用第三方jar的Spring启动应用程序。此jar需要一个xml配置文件,该文件必须由客户端在运行时(单独)提供,并且不能预打包。第三方lib使用以下顺序加载该文件(Is和空检查): 我不能更改lib加载文件的方式(例如使用Spring的资源加载),所以它必须在类路径上。因此,我似乎失去了像java-jarmy-spring-boot-app.jar一样执行它的可能性,因为选项阻止添加任

  • 我有一个使用log4j2的Spring启动应用程序,它的XML配置文件在资源文件夹中。 但这个想法是,首先应用程序在战争之外查找配置文件,如果它不存在,则从资源文件夹中获取配置文件。 这种行为有可能实现吗? 更新:我在我的查询中添加了更多细节!!我的具体案例如下:我有以下环境:spring boot(2.2.4)Java 1.8 log4j2关于Linux(CentOS) application.

  • 问题内容: 我们为我们的一个应用程序提供了一个连接池组件(JAR文件)。截至目前,应用程序连接详细信息捆绑在JAR文件中(在文件中)。 我们可以使其更通用吗?我们可以让客户端告诉属性文件详细信息(路径和文件名),然后使用JAR来获得连接吗? 客户端代码中包含以下内容是否有意义: 与此同时,客户端将指定(以某种方式???)属性文件详细信息,其中包含要连接的URL,超时等。 问题答案: http://

  • 我正在使用Java的发送SMS。我已经加载了log4j jar文件,并将文件放置在正确的位置,但它仍然无法读取它,并得到以下异常: 例外文本: