骆驼组件:动态地从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”中的属性。可以做到吗? 谢谢!
答
是的,这是可能的。 首先,从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
看到这个常见问题:http://camel.apache.org/how-to-use-a-dynamic-uri-in -to.html –