【发布时间】:2014-07-01 03:26:01
【问题描述】:
我有一个代理调用 WSO2 ESB 4.6.0 中的另一个本地代理。 基本上,定义是:
<proxy name="Proxy1" >
<target>
<inSequence>
<xslt/>
<header name="Action" value="issueActivity" />
<send>
<endpoint>
<address uri="http://localhost:8280/services/Proxy2" format="soap11"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<filter xpath="not(get-property('FAULT'))">
<xslt/>
</filter>
<send />
</outSequence>
</target>
</proxy>
<proxy name="Proxy2">
<target>
<inSequence>
<xslt />
<property name="DISABLE_CHUNKING" value="true" scope="axis2"/>
<send>
<endpoint key="Inbound" />
</send>
</inSequence>
<outSequence>
<filter xpath="get-property('FAULT')">
<then>
<sequence key="DefaultErrorSequence" />
<header name="To" action="remove" />
</then>
<else>
<property name="Content-Encoding" scope="transport" action="remove"/>
<xslt/>
</else>
</filter>
<send />
</outSequence>
</target>
</proxy>
在几乎所有调用中,流程都可以正常运行,但是当Proxy1 尝试调用Proxy2 时,此错误会定期出现在日志中:
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:03:35,431] WARN {org.apache.synapse.transport.passthru.TargetHandler} - Receiving response while the handler is in an inconsistent state REQUEST_HEAD
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:03:35,432] ERROR {org.apache.synapse.transport.passthru.util.RelayUtils} - Error while building Passthrough stream
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
[...]
日志中的错误结尾:
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:04:35,435] WARN {org.apache.synapse.transport.passthru.TargetHandler} - Connection time out while in state: REQUEST_DONE
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:04:35,436] WARN {org.apache.synapse.FaultHandler} - ERROR_CODE : 101507
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:04:35,436] WARN {org.apache.synapse.FaultHandler} - ERROR_MESSAGE : Error in Sender
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:04:35,437] WARN {org.apache.synapse.FaultHandler} - ERROR_DETAIL : Error in Sender
TID: [0] [ESB] TID: [0] [ESB] [2014-05-08 12:04:35,437] WARN {org.apache.synapse.FaultHandler} - ERROR_EXCEPTION : null
根据 WSO2 文档,错误 101507 表示 Connection canceled。
问题是这个错误的原因是什么?是客户端问题还是服务器问题?
更新
显然,错误的原因与此问题中描述的相同:WSO2 ESB unknown error code 102511
【问题讨论】:
-
每次调用proxy1都会发生这种情况还是不时发生?
-
@RezaAmeri 不时。大约 5% 的请求。
-
发生错误时,系统传递的信息是什么?它是,xml/text/html/json?
-
作为更正,在您的第二个代理中定义故障序列..不要使用过滤器中介来识别故障。当发生错误时,您是否从入站端点获得响应?那就是在您的第二个代理的输出序列中,使用具有完整级别的日志调解器并查看,它会打印响应。这就是您需要隔离问题的方式。
-
@Ratha,它是 XML。并感谢您的建议。发生此错误时,客户端不会收到任何内容,它只是等待响应。在这种情况下不调用入站端点。