【问题标题】:How can I force a CXF client to disconnect after receiving a FIN packet如何在收到 FIN 数据包后强制 CXF 客户端断开连接
【发布时间】:2012-11-02 13:02:43
【问题描述】:

我有一个 CXF 生成的客户端,它成功调用了 Web 服务并接收到响应,但是客户端坐下来等待,并且在读取超时到期之前不会断开连接。

使用wireshark我发现服务器发送一个TCP FIN数据包并返回一个ACK然后断开连接,但是我的客户端然后发送它的FIN数据包并坐下来等待一个永远不会到来的ACK响应。

有没有办法配置 cxf 客户端来处理这种情况?

我已经使用 .NET 客户端对此进行了测试,它似乎无需等待即可处理它。

非常感谢

【问题讨论】:

  • 我怀疑这与 CXF 本身有关,更多关于如何创建套接字。
  • 请发布连接关闭的 WireShark 转储。
  • 也许服务器上或中间的某些防火墙正在中止连接,然后静默丢弃所有数据包以获取“未建立”连接。服务器应位于FIN_WAIT_2 中,从而响应您的客户端。 en.wikipedia.org/w/…
  • 感谢您的回复,但我不认为这是防火墙问题,我可以通过在我的本地机器上托管他们的测试工具来重现该问题,并且它具有相同的行为
  • 嗨,Brian,对不起,我不确定如何导出 Wireshark 的跟踪信息。它的 ssl 加密但收到的最后一个数据包信息是“加密警报”,并且设置的标志是(FIN、PSH、ACK)。然后我发送一个“alphatech-lm > https [ACK]”,然后是带有标志(ACK)的“加密警报”,然后是一个 alphatech-lm > https [FIN, ACK]。这是超时的时候

标签: java networking tcp cxf mule


【解决方案1】:

似乎是正在使用的 CXF 版本 (2.5.1) 中的一个错误。

2.5.6 及以上版本已解决..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2017-05-26
    • 2016-10-24
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多