【问题标题】:How to reload a properties file in Apache Camel 2.12?如何在 Apache Camel 2.12 中重新加载属性文件?
【发布时间】:2016-05-02 13:44:39
【问题描述】:

我想做两件事:将属性加载到 bean 中,并在属性更新时更新 bean。

我使用 JBoss Fuse 6.1 来安装我的应用程序包,并在需要读取一些配置的服务器上有一个属性文件。属性具有以下行:

mediaTypeList=JSON,DOCX,TXT

我有一个 Java Bean,它是文件属性的镜像:

public class MediatType {

    private List<String> mediaTypeList;

    // GETTERs and SETTERs

}

mediaTypeList 属性表示应用程序承认的 HTTP MediaType 列表,并且该列表可能会随着时间的推移而更新,因此应用程序必须看到更改。

应用程序接收文件上传请求,只有当文件类型被承认时,文件才能被上传。为了验证这一点,我需要使用 bean 读取属性文件。

我使用 Apache Camel 2.12 并通过 Java DSL 配置路由。我还阅读了 this 以使用 PropertyPlaceholder 在 bean 中加载属性,但它不符合我的要求。

有没有办法使用 Apache Camel PropertyPlaceholder 来满足上述要求?还是有别的办法?

问候,

【问题讨论】:

  • Fuse 使用 Karaf。因此,您应该能够使用Configuration Admin Service
  • 谢谢@Ralf!我阅读了参考资料,它看起来是我需要的。
  • 你使用带有 JBoss fuse 的 Fabric 吗?还是独立的?另外,您使用的是 Blueprint 还是 Spring 或 Java DSL?
  • 我使用独立服务器和 Spring 与 Java DSL 相结合。我使用 Java DSL 和 Spring 创建的所有路由构建器来创建注册路由 bean 的骆驼上下文。
  • @Ralf 我将我的配置迁移到 OSGI 蓝图并完美运行。我刚刚配置了一个带有update-strategy="reload" 属性的cm:property-placeholder。谢谢!

标签: java apache-camel jbossfuse property-placeholder


【解决方案1】:

在蓝图文件中使用 cm:property-placeholder 并创建一个名为 sample.cfg 的属性文件并将其放在 $FUSE_HOME/etc 文件夹中

<cm:property-placeholder persistent-id="sample"
update-strategy="reload">
</cm:property-placeholder>

在骆驼路线中,您可以使用

读取属性
<from uri="timer:foo?period={{period}}" />

【讨论】:

    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多