1

所以我有一个 Web 应用程序(在 tomcat 内),它使用来自外部提供商的 Axis2 Web 服务。我已经根据提供者的 WSDL 生成了我的 Web 服务客户端的代码。

该代码现在至少可以正常工作 6 个月。6 天前它停止工作,我收到了 SocketTimeoutException。测试服务器至少有一个月没有动过,所以我可以排除对 Java 二进制文件或服务器中设置的更改。

这是我的堆栈跟踪的多汁部分:

[2012-12-12 13:33:15.718 MEZ]: org.apache.axis2.AxisFault: Read timed out
[2012-12-12 13:33:15.718 MEZ]:  at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
[2012-12-12 13:33:15.718 MEZ]:  at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
[2012-12-12 13:33:15.718 MEZ]:  at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
[2012-12-12 13:33:15.718 MEZ]:  at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:389)
[2012-12-12 13:33:15.718 MEZ]:  at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:222)
[2012-12-12 13:33:15.718 MEZ]:  at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
[2012-12-12 13:33:15.734 MEZ]:  at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
[2012-12-12 13:33:15.734 MEZ]:  at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
[2012-12-12 13:33:15.734 MEZ]:  at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
[2012-12-12 13:33:15.734 MEZ]:  at my.generated.webservice.client.Quoting_ServiceStub.getQuotesByRequest(Quoting_ServiceStub.java:4215)
...
[2012-12-12 13:33:15.781 MEZ]: Caused by: java.net.SocketTimeoutException: Read timed out
[2012-12-12 13:33:15.781 MEZ]:  at java.net.SocketInputStream.socketRead0(Native Method)
[2012-12-12 13:33:15.781 MEZ]:  at java.net.SocketInputStream.read(SocketInputStream.java:129)
[2012-12-12 13:33:15.781 MEZ]:  at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
[2012-12-12 13:33:15.781 MEZ]:  at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
[2012-12-12 13:33:15.796 MEZ]:  at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
[2012-12-12 13:33:15.796 MEZ]:  at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
[2012-12-12 13:33:15.796 MEZ]:  at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)

这发生在所有测试和生产系统(Windows 和 Linux)上。对于通信,我使用的是 HttpClient 3.1 (Apache commons),并且已经重新启动了应用程序和机器,但没有成功。

现在这是奇怪的事情:我调试了我的 Web 服务客户端,并且能够使用 SoapUI(在 Windows 上)和 curl(在 Linux 上)将请求 XML 发送到 Web 服务服务器并得到响应(在 1.5 秒内快速合理) . 所以这也不是 DNS、防火墙或权限问题。

我很欣赏如何解决这个问题的任何想法。

4

0 回答 0