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);