ESB MULE将参数传递给java方法

时间:2013-03-05 12:26:46

标签: mule invoke payload inbound

我使用MULE版本3.3.0 CE,我想从inbound中获取一些值,然后将其传递给java方法,在java方法中对传递的值进行一些更改,最后我再次将它从java方法传递给出境????

2 个答案:

答案 0 :(得分:7)

您可以仅使用MEL执行此操作,而不是将Java bean绑定到Mule API(使用Callable),例如:

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

答案 1 :(得分:3)

  1. 使您的Java组件实现org.mule.api.lifecycle.Callable
  2. 在onCall中,您可以按如下方式获取消息:

    MuleMessage message = eventContext.getMessage();

  3. 现在您可以获取入站属性:

    Object someProp = message.getInboundProperty(“some_prop_name”);

  4. 对其进行操作后,将其作为出站属性放回:

    message.setOutboundProperty(“some_prop_name”,someProp);