gpt4 book ai didi

java - Axis Web 服务挂起,因为未返回连接关闭

转载 作者:行者123 更新时间:2023-11-29 07:22:50 24 4
gpt4 key购买 nike

我有一个使用 PHP Web 服务(在 Apache 上运行)的 Axis 1.4(带有 Spring)Web 服务客户端。这在开发环境中工作得很好,但在生产环境中,代码执行在客户端收到 SOAP 响应后直接卡在 Axis 库中的某个地方。我已经确定了 Wireshark,从客户端的角度来看,唯一的区别是在开发环境中,SOAP 响应的 HTTP header 包含条目


Connection: close

生产环境中缺少。我的假设是这就是代码执行挂起的原因,因为 Axis 需要连接关闭 header 字段。

我可以通过配置客户端来解决这个问题吗?如果没有,请提供有关配置 Apache + PHP 以正确关闭连接的任何提示。

最佳答案

尝试在您的应用程序中设置 -Dhttp.keepAlive=false 系统属性,如果可以在应用程序的其他部分禁用保持 Activity 。这将防止 java 内部 HttpClient 类尝试从打开的连接急切地填充 BufferedInputStream 时发生某些挂起。

有关详细信息,另请参阅 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4479751 .

如果这有机会帮助您查看挂起客户端的堆栈跟踪,它应该如下所示:

java.lang.Thread.State: 可运行 在 java.net.SocketInputStream.socketRead0( native 方法) 在 java.net.SocketInputStream.read(SocketInputStream.java:129) 在 java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 在 java.io.BufferedInputStream.read1(BufferedInputStream.java:258) 在 java.io.BufferedInputStream.read(BufferedInputStream.java:317) - 锁定 <0xab82fa30>(java.io.BufferedInputStream) 在 sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687) 在 sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072) - 锁定 <0xab82c838>(一个 sun.net.www.protocol.http.HttpURLConnection)

http.keepAlive 设置实质上确保 HttpClient 将始终按照 HeavyWave 的建议发送“连接:关闭”。

关于java - Axis Web 服务挂起,因为未返回连接关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1624159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com