【问题标题】:Getting java.net.SocketTimeoutException: connect timed out error获取 java.net.SocketTimeoutException:连接超时错误
【发布时间】:2017-02-14 10:57:08
【问题描述】:

我正在尝试从我的应用程序连接到网络服务,但出现以下异常:

org.apache.axis2.AxisFault: The host did not accept the connection within timeout of 30000 ms
                at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
                at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:197)
                at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
                at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
                at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
                at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
                at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
                at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
                at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)

Caused by: org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 30000 ms
                at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:155)
                at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:130)
                at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
                at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
                at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
                at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
                at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
                at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
                at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
                ... 27 more
Caused by: java.net.SocketTimeoutException: connect timed out
                at java.net.PlainSocketImpl.socketConnect(Native Method)
                at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
                at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
                at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
                at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367)
                at java.net.Socket.connect(Socket.java:524)
                at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:545)
                at sun.reflect.GeneratedMethodAccessor197.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:592)
                at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140)
                ... 35 more

我没有在我的应用程序中覆盖超时间隔。 谁能告诉我这个超时是通过哪个属性配置的?在哪个位置配置?我以为它在axis2.xml中配置但我可能错了

【问题讨论】:

  • 这听起来很明显,但是您尝试连接的网络服务器是否真的可用?你没有在网址中做任何错字吗?您是否使用了正确的端口?因为,至少对我来说,最常见的连接超时问题总是其中之一^^
  • @Florian Schöffl 我的问题不同而简单。如果您看到 stacktrace ,它的说法当前超时已设置为“30000”。我只想知道它的配置在哪个地方
  • 啊该死的,我完全看错了。是的,您正在寻找 CONNECTION_TIMEOUT 参数,该参数确实位于axis2.xml 中。
  • @FlorianSchöffl 感谢您的确认。但是想知道它是如何设置为 30000 的。我没有在代码中的任何地方设置它,该属性的默认值为 0。如果您可以提供任何输入,它将非常有帮助

标签: java apache axis


【解决方案1】:

我不太确定你对它的承诺,但默认超时 30 秒是在 axis2 的源代码中设置的。

准确地说是在 org.apache.axis2.client.Options 第 118 行(axis2 版本 1.7.4):

public static final int DEFAULT_TIMEOUT_MILLISECONDS = 30 * 1000;

如果没有手动设置 timout 并且其默认值为 -1(例如第 504 行),则将使用此默认值。

    return timeOutInMilliSeconds == -1 ? DEFAULT_TIMEOUT_MILLISECONDS
            : timeOutInMilliSeconds;

如果你想覆盖超时,我会推荐你​​到axis documentation

【讨论】:

  • 谢谢哥们..这就是我想知道的
猜你喜欢
  • 1970-01-01
  • 2020-10-30
  • 2013-12-01
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 2011-01-29
相关资源
最近更新 更多