Apache camel 在上下文中获取karaf env变量

Apache camel 在上下文中获取karaf env变量,apache-camel,cxf,apache-karaf,jbossfuse,Apache Camel,Cxf,Apache Karaf,Jbossfuse,我试图在上下文中获取karaf env变量 我补充说 在camelcontext外部,并尝试在camelcontext内部使用karaf.home。但它无法从该位置加载数据。我试过这样做 我们不能在camelcontext中访问它吗?Karaf变量被定义为JVM系统变量,而不是env变量。 你需要它们做什么? 如果您只需要加载配置文件,请使用OSGi方法,不要直接引用任何路径 <blueprint> <cm:property-placeholder id="you

我试图在上下文中获取karaf env变量 我补充说

在camelcontext外部,并尝试在camelcontext内部使用karaf.home。但它无法从该位置加载数据。我试过这样做



我们不能在camelcontext中访问它吗?

Karaf变量被定义为JVM系统变量,而不是env变量。
你需要它们做什么? 如果您只需要加载配置文件,请使用OSGi方法,不要直接引用任何路径

<blueprint>
    <cm:property-placeholder id="yourConfig"
                             persistent-id="file.name" />

    <camelContext>
        <propertyPlaceholder location="blueprint:yourConfig" />

        <!-- Access properties using {{property.name}} -->
        <route id="One" autoStartup="{{route.one.enabled}}" > ...
    </camelContext>
</blueprint>

...
这将从
${karaf.home}/etc/file.name.cfg
加载属性

您的包也可以在其他容器中运行。

我在不同的手册、post等中见过,如果您试图在标签中使用环境变量,您应该使用{{var}而不是${var}。您可以使用{{karaf.home}或{{karaf.root}或{karaf.etc}

重要提示:如果您偶尔在文件路径(即C:\receive.cfg)中有格式符号,\n则路径计算不正确,Camel中不支持符号转义,因此唯一的方法是编辑文件名

我蓝图的一部分:

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
        <from .../>
        <setBody>
            <method ref="dbExtractorBean" method="extract(true, '{{karaf.home}}\etc\com.mycopmany.extraction.cfg')"/>
        </setBody>
        <to .../>
    </route>
</camelContext>

可以查看环境值:

  • karaf@root>外壳:env karaf.base
  • karaf@root>壳牌:环境卡拉夫之家

此配置适用于我的开发Windows计算机,在Linux上,您应该使用/进行路径分隔,我不知道(目前)如何配置路径分隔符以使此路由在Windows和Linux计算机上都能工作,而无需重新编译。

我不确定这是否可行。您可以通过@PropertyInject注释访问普通环境变量。我尝试了此选项,我可以在camelContext中获取属性数据,但不能在routeContext中获取。如果不查看您的代码,我无法提供更多详细信息