Spring CamelContext无法解析占位符

时间:2013-11-12 14:07:49

标签: java spring apache-camel

在我的应用程序中,我想从我的application.properties中使用 someData 填充端点URL并彻底填写 header.name header.myId 在使用myEndpoint之前。

my_bean.xml:

<camel:camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >
        <propertyPlaceholder id="properties" location="ref:myProps"/>

        <endpoint id="myEndpoint" uri="...myUrl.../${header.name}/{{someData}}/${header.myId}"/>

        <route id="myRoute" trace="true">
            ...
        </route>

</camel:camelContext>

它工作得很好,我创建了测试,一切都很棒我将my_bean.xml添加到web.xml,以便使用一个类,我在另一个类中使用此端点。将它添加到web.xml后,我收到错误:

  

信息:初始化Spring root WebApplicationContext lis 07,2013   3:57:44 PM org.apache.catalina.core.StandardContext listenerStart   SEVERE:将上下文初始化事件发送给侦听器的异常   类的实例   org.springframework.web.context.ContextLoaderListener   org.springframework.beans.factory.BeanDefinitionStoreException:   名称为'myEndpoint'的bean定义无效   null:无法解析占位符'header.name'   字符串值:   “http4:... myUrl ... / $ {header.name} / {{someData}} / $ {header.myId}”

我的临时解决方案:我将 header.name header.myId 添加到application.properties(其中 someData )并再次运行但我知道不应该这样做。 任何想法如何在不将这些值写入属性的情况下修复它?

1 个答案:

答案 0 :(得分:0)

这是Spring Framework的一个限制。我们在Apache Camel网站上的常见问题解答中解释了这一点以及您可以做些什么:http://camel.apache.org/how-do-i-use-spring-property-placeholder-with-camel-xml.html