質問

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

役に立ちましたか?

解決

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>

他のヒント

  1. Make your Java component implement org.mule.api.lifecycle.Callable
  2. In its onCall you can get the message as follows:

    MuleMessage message = eventContext.getMessage();

  3. Now you can obtain the inbound properties:

    Object someProp = message.getInboundProperty("some_prop_name");

  4. After operating over it, you place it back as an outbound property:

    message.setOutboundProperty("some_prop_name", someProp);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top