【问题标题】:ESB MULE passing the parameters to the java methodESB MULE 将参数传递给 java 方法
【发布时间】:2013-03-05 12:26:45
【问题描述】:

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

【问题讨论】:

    标签: mule invoke payload inbound


    【解决方案1】:

    您可以仅使用 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>
    

    【讨论】:

    • 在第二种形式中,flowVars/InvocationProperties 被认为是入站、出站还是其他?
    • 其他:它们是流变量,即可以在 flowVars 映射中访问,除非您禁用此功能,否则它们是 MEL 脚本的全局变量。
    【解决方案2】:
    1. 让您的 Java 组件实现 org.mule.api.lifecycle.Callable
    2. 在它的onCall中你可以得到如下消息:

      MuleMessage 消息 = eventContext.getMessage();

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

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

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

      message.setOutboundProperty("some_prop_name", someProp);

    【讨论】:

    • 感谢您的回复。 :) 你能详细解释一下吗?首先我在 .mflow 文件中设置一个变量,然后在 java class callable 中获取它??
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    相关资源
    最近更新 更多