骆驼组件:动态地从Bean中设置属性

问题描述:


我已经在Jboss Fuse BluePrint中定义了一个Camel路径。我需要在Bean的运行时设置一个变量。看到这个例子:骆驼组件:动态地从Bean中设置属性

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route id="wsClient"> 
      <from uri="timer:foo?repeatCount=1" /> 
      <setBody> 
       <simple>Message</simple> 
      </setBody> 
      <transform> 
        <method bean="myBean" method="transform" /> 
      </transform> 
      <to uri="cxf:bean:MyWebService?defaultOperationName={{operation}}" /> 
      <to uri="mock:result" /> 
    </route> 
</camelContext> 

在这个例子中,我想设置名为“操作”豆“为myBean”中的属性。可以做到吗? 谢谢!

+0

看到这个常见问题:http://camel.apache.org/how-to-use-a-dynamic-uri-in -to.html –

是的,这是可能的。 首先,从bean设置一个头,后来使用http://camel.apache.org/recipient-list.html

我不熟悉Spring DSL,但在Java DSL它是这样的:

.recipientList(simple("cxf:bean:MyWebService?defaultOperationName=${header.operation}")) 

是的,你可以做到这一点的bean中。无需传递任何特定参数。骆驼可以自动绑定交换,身体等等作为方法参数。参考文献:http://camel.apache.org/bean-binding.html

使用下面的代码,你可以设置页眉或财产

exchange.getIn().setHeader("HeaderName", "Value"); 

exchange.setProperty("Key", "Value"); 
+0

感谢您的回复,这似乎很有希望。唯一的限制是我的一些Beans没有实现Exchange模式,我的意思是他们只是接收作为Web服务参数参数的Java POJO。换句话说,他们在输入一个Java Object而不是Exchange。是否有可能在纯Java Bean中注入Exchange对象?非常感谢 – user2824073