将Spring bean注入Camel DSL

时间:2015-01-30 12:43:20

标签: java spring osgi apache-camel

尝试将Spring bean添加到Camel body属性中。 类似的东西:

MVEL: exchange.in.body.limit = uiLimit
<transform>
    <mvel>
        exchange.in.body.limit = uiLimit;
        exchange.in.body;
    </mvel>
</transform>
Spel: request.body.limit = uiLimit

甚至首先放入标题:

<setHeader headerName="limit">
  <simple>ref:uiLimit</simple>
</setHeader>

uiLimit在哪里:

<bean id="uiLimit" class="java.math.BigInteger">
  <constructor-arg value="${UI_LIMIT} />
</bean>

仍然在标题和属性中变为null。

为什么注册表中的bean查找对OSGI不起作用? (单束内的所有豆/路线)

PS:这在Route中工作正常:

<bean ref="uiLimit" method="toString"/>

2 个答案:

答案 0 :(得分:1)

transform仅用于转换邮件正文。不要改变标题。

如果您想更改标题,请使用setHeader

答案 1 :(得分:0)

此类行为的原因是Exchange在另一个捆绑包中创建并通过公开的服务来创建:

<osgi:service ref="someHandler" interface="org.apache.camel.Component"/>

Exchange包含来自另一个未声明此bean的bundle的Registry / Context。 所有表达式语言都使用附加到Exchange的Registry / Context,而不是使用当前发布的注册表