【问题标题】:Web service return empty on WSO2 ESBWeb 服务在 WSO2 ESB 上返回空
【发布时间】:2013-04-29 05:56:13
【问题描述】:

我们正在使用 WSO2 ESB 来访问我们的服务。我们在 Application Server 上开发了服务,我们可以通过使用 ESB 代理服务来访问它们。然而,有时 ESB 会向我们的客户返回空值。如果我直接调用 AS,我可以看到响应。当 ESB 开始变为空值时,它会影响我们在 ESB 上的所有服务。我们找不到如何解决问题。当我们重新启动 ESB 服务器时,一切又开始工作了。

我们正在使用 WSO2 ESB 4.6.0 和 WSO2 AS 5.0.2

谢谢,

Ps:我正在执行这个脚本来查看 Web 服务响应。但是 Web 服务响应是空的。 curl -d @request.xml -H "Content-Type: application/soap+xml;charset=UTF-8" "http://esbhostname.com:8280/services/Report" > response.xml

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    我们在直通传输中注意到了这样的问题..但它真的很难重现..我们注意到的是,wso2esb 4.6.0 有时会丢弃 POST 消息体..不确定根本原因是什么或在哪种情况下它发生了..一旦我们能够重现它,我们将尽快解决这个问题.. 这个问题发生在直通传输上。如果您真的不需要直通传输,您可以切换到 nio tarnsport。编辑用于 nio 传输的 axis2.xml 传输发送方/接收方。

    【讨论】:

    • 谢谢 Ratha,我会尝试 ESB 的 NIO 传输。但是,我们也可以在负载均衡器上看到相同的异常。你认为我也可以对 LB 使用相同的解决方法吗?
    • 当然,ELB 也使用直通传输..所以,可能会在那里遇到同样的问题...如果我们解决问题..这将在 esb+elb+apim 中可用
    • 嗨 Ratha,将直通传输更改为 nio 传输解决了我的问题。 wso2 或axis2 上是否有任何关于此问题的开放错误。我想跟随它。谢谢
    【解决方案2】:

    从 ESB 4.6.0 开始,默认传输是 passthru。您可以使用 NHTTP 传输尝试相同的场景。按照以下步骤使用 NHTTP 代替 passthru。

    • 打开 ESB_HOME/repository/conf/carbon.xml
    • <Axis2Config> 下,你会发现会找到一个名为 <ConfigurationFile>。它目前指向 ${carbon.home}/repository/conf/axis2/axis2.xml
    • 将该位置修改为此 -

      ${carbon.home}/repository/conf/axis2/axis2_nhttp.xml

    • 重启 WSO2 ESB

    【讨论】:

    • 您好,我使用的是 wso2 esb 4.8.1,当我使用标注调解器时出现空响应问题。如果我尝试调用无法访问的主机(例如错误的端点主机),调出调解器不会引发任何故障,不会执行默认故障序列。没有响应被发送回客户端。如何处理调出调解器中的套接字超时?相同的测试适用于发送中介。
    • 我通过在 carbon.xml 中使用 axis2_nhttp.xml 并将此端口添加到 nhttp.properties 来解决: http.socket.timeout.receiver=90000 (我的标注中的套接字超时仍然是 60 秒,但现在调用者可以得到错误)
    【解决方案3】:

    根据您的描述很难说会发生什么...但我可以建议您在 AS 和 ESB 之间使用 tcpmon...然后您就可以知道出了什么问题...

    Tcpmon 可以在 ESB_HOME/bin/ 中找到。将代理路由到 tcpmon 并从 tcpmon 路由到 AS。然后根据请求和响应,您可以获得更好的主意...

    谢谢,

    莫汉

    【讨论】:

    • 感谢 Mohan 的回复,当我从 ESB 收到空响应时,我直接从 AS 调用 Web 服务,我可以看到响应。所以我认为 ESB 会以某种方式覆盖 AS 响应并返回空字符串。
    【解决方案4】:

    我们的一位客户报告了此类问题。在这种情况下,用户观察到在从 ESB 向 REST 服务发送大约 3 或 4 个请求后,它开始停止从 ESB 向后端 REST 服务发送消息。在这种情况下,ESB 只是暂停端点并在一段时间后停止向 REST 服务发送请求。如果可以在 ESB 和 AS 之间放置一个 tcpmon,就可以验证是否是这种情况。同样,这也只发生在默认的直通传输中。

    【讨论】:

    • 嗨 Chanaka,我正在使用 ESB 4.8.1,并且我有你提到的行为。 ESB 根本不会将任何流量转发到后端,一旦 ESB 进入这种情况,它似乎也不会恢复。没有为此切换回 NHTTP 的最佳解决方案是什么? WSO2 是否可以公开提供该补丁,因为这会使 ESB 和 API Manager 几乎无法使用?
    猜你喜欢
    • 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
    相关资源
    最近更新 更多