首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel属性-占位符:无法使用嵌套属性配置`camel:sslContextParameters`‘

Camel属性-占位符:无法使用嵌套属性配置`camel:sslContextParameters`‘
EN

Stack Overflow用户
提问于 2014-04-02 14:14:31
回答 2查看 2.5K关注 0票数 0

我使用Camel-HTTP42.10.4组件从我的应用程序中调用远程REST服务。这种通信需要SSL配置。我成功地用硬编码的resourcepassword值测试了我的配置。

现在,我需要使用camel的属性-占位符来配置相同的内容。我在spring配置中使用嵌套属性。例:

代码语言:javascript
复制
${${env:${default.fallback.env}}.path.to.keystore} 

我遵循使用PropertyPlaceholder并定义了

代码语言:javascript
复制
<bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <ref bean="confgPath1" />
            <ref bean="configPath2" />
        </list>
    </property>
</bean>

和sslContextParameters如下所示

代码语言:javascript
复制
<camel:sslContextParameters id="sslContextParameters">
    <camel:trustManagers>
        <camel:keyStore resource="{{{{default.fallback.env}}.keystore.file}}"
            password="{{{{default.fallback.env}}.keystore.password}}" />
    </camel:trustManagers>
    <camel:keyManagers keyPassword="{{{{default.fallback.env}}.keystore.password}}">
        <camel:keyStore resource="{{{{default.fallback.env}}.keystore.file}}"
            password="{{{{default.fallback.env}}.keystore.password}}" />
    </camel:keyManagers>
    <camel:clientParameters>
        <camel:cipherSuitesFilter>
            <camel:include>.*</camel:include>
        </camel:cipherSuitesFilter>
    </camel:clientParameters>
</camel:sslContextParameters>

我的应用程序在启动时成功地加载了spring上下文。但是在到达端点后,我得到了错误:

代码语言:javascript
复制
Failed to resolve endpoint <<My remote service URL>> due to: Error parsing property value: {{{{default.fallback.env}}.keystore.password}}.

我可以使用骆驼的属性占位符的简单属性。对于ex

代码语言:javascript
复制
{{default.fallback.env}}

但是,当我尝试使用嵌套属性时,它给了我上面指定的错误。帮我找出解决这个问题的正确方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 03:31:32

当前camel属性组件不支持嵌套属性,因此我只为它填充一个JIRA

由于Camel属性首先不支持嵌套属性,因此可以定义这样的属性文件,并从系统属性中设置环境并使用{{偏属性}引用这些属性。

代码语言:javascript
复制
someproperty={{{{environment}}.someproperty}}

# LOCAL SERVER
junit.someproperty=junit

# LOCAL SERVER
local.someproperty=local

# TEST
test.someproperty=test

# PROD
prod.someproperty=prod
票数 2
EN

Stack Overflow用户

发布于 2016-12-21 11:49:23

我刚刚使用Spring方法创建Camel SSL配置:

代码语言:javascript
复制
  <bean id="sslContextParameters" class="org.apache.camel.util.jsse.SSLContextParameters">
    <property name="keyManagers">
      <bean class="org.apache.camel.util.jsse.KeyManagersParameters">
        <property name="keyPassword" value="${dsi.key.password}" />
        <property name="keyStore">
          <bean class="org.apache.camel.util.jsse.KeyStoreParameters">
            <property name="resource" value="${dsi.keystore.file}" />
            <property name="type" value="JKS" />
            <property name="password" value="${dsi.keystore.password}" />
            <property name="camelContext" ref="camelContext" />
          </bean>
        </property>
        <property name="camelContext" ref="camelContext" />
      </bean>
    </property>
    <property name="camelContext" ref="camelContext" />
  </bean>

我相信使用Spring的属性解析器,您可以实现更多,并且不需要使用自定义桥解析器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22814272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档