【问题标题】:WSO2 Unexpected EOF in prologWSO2序言中的意外EOF
【发布时间】: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。并感谢您的建议。发生此错误时,客户端不会收到任何内容,它只是等待响应。在这种情况下不调用入站端点。

标签: http wso2 wso2esb


【解决方案1】:

您是否在编写查询时在操作部分启用了返回请求状态复选框?这可能会导致问题..试试..

【讨论】:

  • 这个代理不涉及数据服务服务器,只涉及 ESB。但还有其他人涉及。你说这个复选框应该取消标记吗?
  • 感谢@user3129056 的回答。我认为这与请求状态无关。我猜这是直通传输中的一个错误。
  • @user3129056 我想知道数据服务定义如何影响上述问题,请您解释一下吗?
【解决方案2】:

总结到目前为止的所有 cmets,我认为第一个成就是问题得到解决,而不是 Proxy1-&gt;Proxy2 架构,将 Proxy2 更改为序列并使用序列中介调用它们而不是使用发送中介调用它们删除以前显示的错误。 这工作正常,但由于我们需要Proxy1-&gt;Proxy2 架构,我认为将Proxy1 的“outSequence”定义为Proxy1 的“inSequence”中的接收序列,并使用带有@987654327 的发送调解器将其发送到Proxy2 @endpoint 将是解决方案。

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多