简单的 WEB 代理没有响应
Simple WSOESB Proxy doen't response
非常简单的例子。要求:
<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 终止并向客户端发送响应。一旦我删除它,代理立即断开连接,状态代码为“202”已接受消息。
这是因为,默认情况下,属性 "continueParent" 设置为 false 迭代调解器:更改为 <iterate continueParent="true" expression="//T/m1">
并且你应该在你的 inSequence 中明确发送一个 202,设置这个 属性 : <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
非常简单的例子。要求:
<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 终止并向客户端发送响应。一旦我删除它,代理立即断开连接,状态代码为“202”已接受消息。
这是因为,默认情况下,属性 "continueParent" 设置为 false 迭代调解器:更改为 <iterate continueParent="true" expression="//T/m1">
并且你应该在你的 inSequence 中明确发送一个 202,设置这个 属性 : <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>