简单的WSOESB代理没有响应

时间:2015-08-13 08:08:22

标签: wso2esb

非常简单的例子。请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
  <soapenv:Body>
    <T>
      <m1>bysy</m1>
      <m1>momo</m1>
      <m1>gigi</m1>
    </T>
  </soapenv:Body>
</soapenv:Envelope>

我想迭代并记录标签m1中的每个元素。

代理代码:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Loopback" transports="https,http"
  <target>
    <inSequence>
      <property name="OUT_ONLY" value="true" scope="axis2"/>
      <iterate expression="//T/m1">
        <target>
           <sequence>
              <property name="OUT_ONLY" value="true" scope="axis2"/>
              <log level="custom">
                 <property name="M1" expression="//text()"/>
              </log>
              <drop/>
           </sequence>
        </target>
      </iterate>
    </inSequence>
  </target>
</proxy>

按预期工作并记录所有值。但WSO2ESB服务器并没有关闭连接,直到它超时。 (我使用SOAPUI进行测试)

我试图将属性OUT_ONLY RESPOND NO_KEEPALIVE放在代理的不同部分,但它没有帮助,我尝试使用,但结果相同。

看起来像 iterate 中介中的问题,它不会让inSequence终止并向客户端发送响应。删除后,代理会立即断开状态代码&#39; 202&#39;接受消息

1 个答案:

答案 0 :(得分:1)

这是因为,默认情况下,使用iterate mediator将属性“continueParent”设置为false:更改为<iterate continueParent="true" expression="//T/m1">

您应该在inSequence中明确发送202,设置此属性:<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>