我使用MULE版本3.3.0 CE,我想从入站头中获得一些值,然后将其传递给java方法,在java方法中对传递的值进行一些更改,最后再次将其从java方法传递到出站????
与其将Java bean绑定到Mule API(使用Callable
),不如只使用MEL,例如:
<invoke object-ref="yourBean"
method="yourMethod"
methodArguments="#[message.inboundProperties['inboundPropertyName']]" />
<set-property propertyName="outboundPropertyName"
value="#[payload]" />
这有一个警告,即消息有效负载受到invoke
元素的影响。如果这是一个问题,那么您可以使用:
<expression-component>
propVal = app.registry.yourBean.yourMethod(message.inboundProperties['inboundPropertyName']);
message.outboundProperties['outboundPropertyName'] = propVal;
</expression-component>
- 让你的Java组件实现org.mule.api.lifecycle.Callable
-
在它的onCall中,你可以得到如下消息:
MuleMessage message = eventContext.getMessage();
-
现在您可以获得入站属性:
Object someProp = message.getInboundProperty("some_prop_name");
-
在对其进行操作后,将其作为出站属性放回:
消息。setOutboundProperty("some_prop_name",someProp);