【问题标题】:Exception in thread "main" org.apache.axis2.AxisFault: Read timed out线程“主”org.apache.axis2.AxisFault 中的异常:读取超时
【发布时间】:2014-12-17 16:58:46
【问题描述】:

我编写了一个 Web 服务,并且 Web 客户端是使用 Eclipse 向导生成的。 我的客户端应用程序正在请求StringObject。 可以成功检索字符串,当我尝试检索对象时,它给出了以下异常(我使用的是 JBoss 5):

Exception in thread "main" org.apache.axis2.AxisFault: Read timed out
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at se.cambio.cimonitor.ws.implmnt.GetDataStub.retrieveDetails(GetDataStub.java:203)
at se.cambio.cimonitor.ws.client.WebServiceClient.main(WebServiceClient.java:44)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1373)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:560)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)

我找不到出路,请帮帮我。

【问题讨论】:

  • 您对要检索的对象的大小有任何想法吗?
  • 请同时检查为对象提供服务的服务器端代码是否花费太长时间来处理它。

标签: java eclipse axis2


【解决方案1】:

我只能从您放置的唯一异常堆栈跟踪中提供帮助。

异常的根本原因是:

原因:java.net.SocketTimeoutException:读取超时

这意味着当套接字试图读取或接受时发生了超时。在您的情况下,存在读取超时。

你需要弄清楚你的服务服务器的套接字超时是多少,如果可以的话,让它无限期地存在。

【讨论】:

  • 如何增加超时时间?有ajax2设置吗?
  • @Danijel this article 展示了如何做。
【解决方案2】:

我在一个项目中遇到了这个错误,根本原因是代理服务器设置。我不得不修改代理以允许与我尝试访问的服务进行通信。我的代码作为使用自己的代理的自定义应用程序的一部分运行。所以这也可以尝试一下。

【讨论】:

    【解决方案3】:

    我终于可以克服这个问题了。我的对象是一个对象,其中包含另一个对象。然后我用 String 和 int 构造一个 one 对象,并且可以发送成功。

    谢谢...

    【讨论】:

    • 您能否提供更多详细信息?我有同样的错误,这让我发疯......
    【解决方案4】:

    我们遇到了类似的问题,在尝试调用安全的 Web 服务时遇到了 Read Time Out,经过长时间的分析,我们发现传输协议版本不匹配。 Web 服务在 http1.0 上提供服务,我们使用 http1.1 调用它。我们修改了客户端代码中的协议版本,解决了这个问题:

    下面是指定http version-1.0 options.setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION, org.apache.axis2.transport.http.HTTPConstants.HEADER_PROTOCOL_10)的代码;

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2013-09-26
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多