【问题标题】:Mule: prevent groovy component to overwrite payloadMule:防止 groovy 组件覆盖有效负载
【发布时间】:2014-02-12 16:42:40
【问题描述】:

我刚刚意识到,当我在我的 groovy 脚本组件中定义一个变量时,Mule (3.4) 会用这个变量覆盖消息负载。

def variable = "bar";

流到达带有此代码的 Groovy 组件后,有效负载将更改为“bar”。

如何防止这种行为?

将 Groovy 组件放置在扩充器中似乎是一种解决方案,但扩充器是一种“传输障碍”,我必须手动更新我在组件中更改的每个流变量和会话变量。这很容易出错。

完整的流程代码:

<flow name="test-groovyFlow" doc:name="test-groovyFlow">
    <http:inbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="8081" doc:name="HTTP" path="test_groovy"/>
    <set-payload value="foo" doc:name="payload = foo"/>
    <scripting:component doc:name="do something">
        <scripting:script engine="Groovy"><![CDATA[
           def variable = "bar";
        ]]></scripting:script>
    </scripting:component>
    <scripting:transformer doc:name="Create Response">
        <scripting:script engine="Groovy"><![CDATA[
          new java.lang.String(
               "payload: " + message.payload + "\n"
          )
        ]]></scripting:script>
    </scripting:transformer>
</flow>

【问题讨论】:

    标签: java groovy mule


    【解决方案1】:

    添加return payloadreturn message(取决于您是否要让消息或有效负载通过您的Groovy 脚本)作为脚本的最后一行。

    您看到的行为是因为赋值结果被作为脚本的返回结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多