I use MULE version 3.3.0 CE, I want to get some value from header in inbound and then pass it to a java method, in java method making some changes on passed value, finally again I pass it from java method to the outbound????
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Instead of tying your Java beans to the Mule API (with Callable
), you can do this using MEL only, for example with:
<invoke object-ref="yourBean" method="yourMethod" methodArguments="#[message.inboundProperties['inboundPropertyName']]" /> <set-property propertyName="outboundPropertyName" value="#[payload]" />
This has the caveat that the message payload is affected by the invoke
element. If this is a problem then you can go with:
<expression-component> propVal = app.registry.yourBean.yourMethod(message.inboundProperties['inboundPropertyName']); message.outboundProperties['outboundPropertyName'] = propVal; </expression-component>
回答2:
- Make your Java component implement org.mule.api.lifecycle.Callable
In its onCall you can get the message as follows:
MuleMessage message = eventContext.getMessage();
Now you can obtain the inbound properties:
Object someProp = message.getInboundProperty("some_prop_name");
After operating over it, you place it back as an outbound property:
message.setOutboundProperty("some_prop_name", someProp);